복사하여 붙여 넣을 2019 전체 예제
스토리 보드에서 먼저 "그룹화"를 설정하십시오. 초기에 발생해야하며 나중에 설정할 수 없으므로 스토리 보드에서 기억하기가 더 쉽습니다.
다음,
Apple 버그로 인해 heightForHeaderInSection을 구현 해야 합니다 .
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
아직 10 년 동안 Apple 버그가 여전히 있습니다 heightForHeaderInSection
. 전화 를하지 않으면 첫 번째 헤더 (예 : 인덱스 0)가 표시되지 않습니다 .
그래서, tableView.sectionHeaderHeight = 70
단순히 작동하지 않습니다 이 생겼습니다 .
프레임을 설정하면 아무것도 달성되지 않습니다.
에서는 viewForHeaderInSection
단순히 UIView의를 만들 ().
그것은 / 무의미 아무것도 달성하지 당신이 경우 (... 프레임) UIView의 아이폰 OS는 단순히 테이블의 결정에 따라 뷰의 크기를 설정하기 때문이다.
따라서 첫 번째 줄은 viewForHeaderInSection
간단 let view = UIView()
하며 그것이 당신이 보는 관점입니다.
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
}
그게 다야-다른 것은 시간 낭비입니다.
또 다른 "거친"애플 문제.
위에서 사용한 편의 확장은 다음과 같습니다.
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:
?