Как мне это сделать:
1) Создать пользовательский класс нижнего колонтитула:
import UIKit
class BlackFooterView: UICollectionReusableView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .black
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
2) Зарегистрировать класс нижнего колонтитула в UICollectionView
и настроить размер ссылки (Обычно в viewDidLoad
необходим метод ViewController
:
override func viewDidLoad() {
super.viewDidLoad()
/// Class registration
self.collectionView!.register(BlackFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: footerReuseIdentifier)
/// Reference size
(self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout).footerReferenceSize = CGSize(width: collectionView.bounds.width, height: 50)
}
3) Реализуйте методы делегата:
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionFooter {
return collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: footerReuseIdentifier, for: indexPath)
}
/// Normally should never get here
return UICollectionReusableView()
}
4) Вуаля:
Образец предоставлен в Swift 4.2
Примечание:
- Код генерации ячеек не включен.
- Для примера я использовал класс
UICollectionViewController
, поэтому методы delegate
начинаются с override
- Вы также можете создавать нижние колонтитулы из XIB.В этом случае регистрация должна быть сделана с использованием registerNib: forSupplementaryViewOfKind: withReuseIdentifier: метод.