Intereting Posts
tvOS – Не удается подключиться к localhost Не удалось добавить Push-сертификаты для второго приложения в одном проекте Firebase Добавление эффекта перекрестного растворения – создание видео iOS Навигационная панель назад кнопка невидимая Программно показать Control Center ios Как реализовать два UIButton одновременно? Оценка (NSIntegers) внутри if-statement Objective-C Ошибка входа в GooglePlus: операция не может быть выполнена. (ошибка com.google.HTTPStatus 400.) Swift UITabBarController спрятать с анимацией Отключить прокрутку ScrollView Как удалить или отключить ключ предпочтений от клавиатуры iPad для конкретного текстового поля UIImageView загружает изображение очень медленно Как проверить информацию о истории версий приложения ios на itunesconnect Удаление строки: ошибка «Недопустимое обновление: недопустимое количество строк в разделе 0» Управление музыкальными плеерами iPod (например, Spotify) из приложения iOS

Установите размер коллекции viewview, равный содержимому

Я создал коллекциюViewCell, которая содержит imageView и ярлык. Однако метка установлена ​​в sizeToFit, поэтому она будет изменяться в соответствии с содержимым. Проблема в том, что я не могу установить размер collectionVieCell в размер содержимого внутри ячейки. вот мой код ниже:

введите описание изображения здесь

Пользовательская ячейка

class BrowseCell: UICollectionViewCell { @IBOutlet var mainImageView:UIImageView? @IBOutlet var titleLabel:UILabel? override init(frame: CGRect) { super.init(frame: CGRect()) self.backgroundColor = UIColor.whiteColor() titleLabel?.numberOfLines = 0 titleLabel?.sizeToFit() self.contentView.autoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } } 

collectionView методы делегата

  func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 10 } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReuseIdentifier("ItemCell", forIndexPath: indexPath) as! BrowseCell cell.titleLabel?.text = testText return cell } // MARK: WaterfallLayoutDelegate func collectionView(collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSizeMake(140, 150) } func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { var reusableView: UICollectionReusableView? = nil return reusableView! } 

Я не думаю, что вы можете изменить размер ячейки после загрузки, вы можете попытаться сделать такую ​​же методологию, как описанную ниже.

Вы можете попытаться получить ячейку по пути индекса и получить ширину метки.

Вы также можете поместить весь текст, который хотите загрузить в массиве и задать ширину в соответствии с количеством символов.

 func collectionView(collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { let flickrPhoto = photoForIndexPath(indexPath) //2 if var size = flickrPhoto.thumbnail?.size { size.width += 10 size.height += 10 return size } return CGSize(width: 100, height: 100) }