Как указать размер ячейки CollectionView?IOS

Программируем под IOS
Ответить
Anonymous
 Как указать размер ячейки CollectionView?

Сообщение Anonymous »


Мне нужно, чтобы размер ячейки представления коллекции менялся в зависимости от различных условий.

Это то, что я использую сейчас:

класс CustomTabView: UIView { ... коллекция функцийView( _ CollectionView: UICollectionView, коллекция макетовViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath ) -> CGSize { ВычислитьНеедедИтемСизе() } func CalculateNeededItemSize() -> CGSize { если tabsList.count > Constant.maximumFullscreenTabsCount { вернуть UICollectionViewFlowLayout.automaticSize } еще { вернуть CGSize (ширина: defineItemWidthForFullscreen(), высота: кадр.высота) } } func defineItemWidthForFullscreen() -> CGFloat { return UIScreen.main.bounds.width/CGFloat(tabsList.count) } Когда я указываю эту строку кода return UICollectionViewFlowLayout.automaticSize с некоторым тестовым блоком, она работает нормально. Но в противном случае я получаю фатальную ошибку:

Поток 1: «UICollectionViewLayoutAttributes: -setFrame: требуются конечные координаты - {{0, -inf} , {1.7976931348623157e+308, 1.7976931348623157e+308}}" Кроме того, когда я указываю эту строку 'layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize' без метода sizeForItemAt это работает, но мне просто нужно, чтобы моя ячейка имела другой размер в зависимости от условия.

Ячейка представления коллекции содержит метку, и ее ширину следует настроить в соответствии с текстовой строкой:
частная ленивая var titleLabel: UILabel = { пусть метка = UILabel() label.translatesAutoresizingMaskIntoConstraints = false label.numberOfLines = 1 label.textAlignment = .center label.textColor = .white label.font = UIFont.systemFont(ofSize: Constant.titleFontSize, вес: .medium) возвратная этикетка }() функция setupView() { contentView.addSubview(titleLabel) NSLayoutConstraint.activate([ titleLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, константа: 15), titleLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor,constant: -15), titleLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor) ]) }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»