Настройка изображения для аспектной заливки в заголовке представления коллекции охватывает все ячейки на устройстве, но в окне отладки View Hierarchy это соответствует назначению - PullRequest
0 голосов
/ 03 мая 2020

У меня есть липкий заголовок в моем 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...