Cum sa adaug bordura pentru un section header – UITableVIew

Se da un UITableVIew in Swift 3 in care avem doua sectiuni. Cea de-a doua se numeste ACCOUNT.
Section Title UIViewTable

Cerinta pe care o am este sa adaug un separator intre cele doua sectiuni ale tableview-ului, cam ca-n poza:

Section with separator UITableView

Cum o rezolvam? Definim o extensie CALayer care sa adauge o bordura acolo unde s-a specificat:

extension CALayer {

func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) {
let border = CALayer()
switch edge {
case UIRectEdge.top:
border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: thickness)
break
default:
break
}
border.backgroundColor = color.cgColor
self.addSublayer(border)
}
}

Folosim aceasta extensie de layer in delegate-ul tableView(_:willDisplayHeaderView:forSection:) cam asa:

let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
header.contentView.layer.addBorder(edge: [.top], color: UIColor.black, thickness: 3)

Trebuie retinut faptul ca addBorder este metoda pe layer si nu pe contentView.

Share Button

CGGeometry – SWIFT 3

Mai intai cateva detalii despre componentele CGGeometry:

1. CGPoint – structura ce reprezinta un punct in sistem cartezian.
2. CGRect – structura ce reprezinta un dreptunghi prin locatie si dimensiuni.
3. CGSize – structura ce reprezinta dimensiunile latimii si inaltimii.

Nici una dintre cele trei structuri nu precizeaza tipul unitatii de masura folosita. Cele mai uzuale sunt point-ul si pixel-ul.

Cum folosim elemente CGGeometry in Swift 3:

let frame = CGRect(x: 0, y: 0, width: 20, height: 20)

let point = CGPoint(x: 0, y: 0)

let size = CGSize(width: 20, height: 20)

Combinand toate cele trei putem scoate o frumoasa sintaxa in SWIFT 3:

let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 100, height: 100))

In acest ultim exemplu “complex” am folosit un al doilea tip de constructor pentru CGRect.

Share Button