Проблема с ограничениями в пользовательском CollectionViewCell - PullRequest
0 голосов
/ 03 апреля 2020

Столкнулся с проблемой. Содержимое ячейки основано не на границах ячейки, а на экране. Я устанавливаю ограничения для объектов в пользовательской ячейке:

override func setupViews() {

    addSubview(staffLabel)
    addSubview(shiftCollectionView)


    staffLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 1).isActive = true
    staffLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 1).isActive = true
    staffLabel.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 0).isActive = true
    staffLabel.widthAnchor.constraint(equalToConstant: 150).isActive = true

    shiftCollectionView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0).isActive = true
    shiftCollectionView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true
    shiftCollectionView.leftAnchor.constraint(equalTo: staffLabel.rightAnchor, constant: 5).isActive = true
    shiftCollectionView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: 0).isActive = true
}

Но в симуляторе я получаю this.

Как вы можете видеть, мой CollectionView имеет константы safeArea. Но содержимое его клеток нет. (Кстати, заголовок по какой-то причине отображается правильно). Код для ячейки:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    if indexPath.section == 0{
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: schedulesCellIdentifire, for: indexPath) as! SchedulesCell
        return cell
    } else {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: footerCollectionViewCellIdentifire, for: indexPath) as! CalendarFooterLineCell
        return cell
    }
}

Код для заголовка:

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
    return collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerCollectionViewCellIdentifire, for: indexPath)
}

Как я могу использовать SafeArea в моей настраиваемой коллекции ViewCell или как еще это исправить?

Я хочу содержимое ячеек, отображаемых в границах CollectionView. Теперь содержимое ячеек отображается в границах экрана, это частично скрыто (((*

Прошу прощения. Я недостаточно четко описал свою идею. Я хочу, чтобы она выглядела следующим образом: введите описание изображения здесь

Но для этого эффекта я вручную установил ограничение от leftAnchor экрана на 44. Это не круто, потому что я использую этот CollectionView на другом ViewController и отступе 44 очки там не нужны ((*

staffLabel.leftAnchor.constraint (equalTo: contentView.leftAnchor, постоянная: 44) .isActive = true

У меня проблема с отображением столбца Персонал. отображаться либо в границах в collectionView (collectionView устанавливается с учетом SafeArea), но это не происходит автоматически.

Или мне нужен способ определения границ SafeArea в пользовательском классе CollectionViewCell.

Спасибо всем заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...