У меня есть липкий заголовок в моем collectionView с imageView, режим содержимого которого должен быть заполнен аспектом, чтобы сливаться с фоном viewController, скрывая ячейки, которые прокручивались под ним.
imageView привязывается к верхнему, нижнему, ведущему и конечному якорям, и когда режим содержимого соответствует формату, он учитывает эти ограничения. Однако, когда я изменяю режим содержимого на аспектное заполнение, изображение покрывает остальную часть collectionView вплоть до следующего заголовка, что делает то же самое. В результате все ячейки скрыты. В окне Debug View Hierarchy все выглядит так, как должно. Почему imageView ведет себя по-разному на устройстве?
Изображения:
Как это выглядит на устройстве
Как это должно выглядеть
Класс заголовка:
class SearchHeaderView: UICollectionReusableView {
let label: UILabel = {
let l = UILabel()
l.text = "Local or International?"
l.textAlignment = .left
l.textColor = .white
l.font = UIFont(name: "Helvetica", size: 23)
return l
}()
let background: UIImageView = {
let i = UIImageView()
i.image = UIImage(named: "darkBackground")
i.contentMode = .scaleAspectFill
return i
}()
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(background)
addSubview(label)
background.fillSuperView()
label.fillSuperView()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
}
CollectionViewCompositionalLayout:
private func createLayout() -> UICollectionViewLayout {
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
item.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 25, bottom: 0, trailing: 0)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .absolute(50))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
group.interItemSpacing = .fixed(10)
let headerFooterSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .absolute(50.0))
let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top)
header.pinToVisibleBounds = true
let section = NSCollectionLayoutSection(group: group)
section.boundarySupplementaryItems = [header]
let layout = UICollectionViewCompositionalLayout(section: section)
return layout
}