Я знаю, что на эту тему уже есть много сообщений, но они почему-то не привели меня к решению, и на данный момент, после нескольких дней попыток, я не знаю, что делать.
У меня есть UICollectionView
, где у меня есть заголовок.Для шапки я создал свой UICollectionReusableView
.Он содержит StackView с двумя метками.Оба они имеют динамические размеры (Lines = 0).Это ограничения для StackView (я также пытался установить нижнее ограничение равным = 0):
StackView ограничения
Я вычисляю размер заголовка следующим образом ...
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
let item = displayItems.object(at: UInt(section)) as! MySectionDisplayItem
let reusableView: MyReusableView = UIView.fromNib()
reusableView.setTitle(text: item.getTitle())
.setSubtitle(subtitle: item.getSubtitle())
return reusableView.systemLayoutSizeFitting(UILayoutFittingCompressedSize)
}
... и возвращаю представление, которое будет отображаться так:
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let item = displayItems.object(at: UInt(indexPath.section)) as! MySectionDisplayItem
let reusableView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "myReusableView", for: indexPath) as! MyReusableView
reusableView.setTitle(text: item.getTitle())
.setSubtitle(subtitle: item.getSubtitle())
return reusableView
}
В моих UICollectionReusableView
и UICollectionView
Auto Layout включен.
Некоторые вещи, которые я пробовал:
- установить
preferredMaxLayoutWidth
на разные положительные значения на моих ярлыках - внедрить ярлыки в отдельные представления
- работать с ограничениями вместо использования StackView
Я надеюсь, что я не перепутал некоторые из найденных решений, но в любом случае я не думаю, что такая "простая" вещь можетэто трудно понять.