Kopyalamak ve yapıştırmak için tam 2019 örneği
Film şeridinde ilk olarak "Gruplandırılmış" olarak ayarlayın: başlangıçta gerçekleşmelidir, daha sonra gerçekten ayarlayamazsınız, bu yüzden film şeridinde yapmayı hatırlamak daha kolaydır:
Sonraki,
Must uygulamak heightForHeaderInSection nedeniyle Elma hatadan.
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
Hala bir Apple hatası var - on yıldır - heightForHeaderInSection
aramanız yoksa ilk üstbilgiyi (yani, dizin 0) göstermeyecek .
Yani, tableView.sectionHeaderHeight = 70
işe yaramıyor, kırılmış .
Bir çerçeve ayarlamak hiçbir şey yapmaz:
Gelen viewForHeaderInSection
basitçe bir UIView oluşturmak ().
İOS basitçe tablonun belirlediği şekilde görünümün boyutunu ayarladığından anlamsızdır / UIView (çerçeve ...) yaparsanız hiçbir şey elde edemez .
Yani ilk satır viewForHeaderInSection
basit olacak let view = UIView()
ve geri döndüğünüz görünüm bu.
func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let l = UILabel()
view.addSubview(l)
l.bindEdgesToSuperview()
l.backgroundColor = .systemOrange
l.font = UIFont.systemFont(ofSize: 15)
l.textColor = .yourClientsFavoriteColor
switch section {
case 0:
l.text = "First section on screen"
case 1:
l.text = "Here's the second section"
default:
l.text = ""
}
return view
}
Hepsi bu kadar - her şey zaman kaybı.
Başka bir "telaşlı" Apple sorunu.
Yukarıda kullanılan kolaylık uzantısı:
extension UIView {
// incredibly useful:
func bindEdgesToSuperview() {
guard let s = superview else {
preconditionFailure("`superview` nil in bindEdgesToSuperview")
}
translatesAutoresizingMaskIntoConstraints = false
leadingAnchor.constraint(equalTo: s.leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: s.trailingAnchor).isActive = true
topAnchor.constraint(equalTo: s.topAnchor).isActive = true
bottomAnchor.constraint(equalTo: s.bottomAnchor).isActive = true
}
}
tableView:titleForHeaderInSection:
?