Как сделать UICollectionViewCell подходящим для его подзонов (с помощью Auto Layout)

Как изменить размер UICollectionViewCell на основе размера его подзонов, используя Auto Layout?

Мой UICollectionViewCell имеет только один вид в своем contentView . Это пользовательский подкласс UIView который автоматически изменяет размеры, чтобы соответствовать всем его представлениям, используя Auto Layout. Он также правильно реализует -intrinsicContentSize . Однако UICollectionView , а точнее его расположение, похоже, не заботятся об этом.

Я использую UICollectionViewFlowLayout и UICollectionViewFlowLayout :

  • Оставляя itemSize по умолчанию. Это дает мне ячейки размером 50 х 50.
  • Реализация метода делегата -collectionView:layout:sizeForItemAtIndexPath: Однако, когда этот метод вызывается, ячейки (очевидно) еще не появились на экране и не были обновлены системой автоматического макета.

Есть ли способ изменить размер моих ячеек на основе их подзонов, используя стандартные классы Apple? Или мне нужно реализовать свой собственный подкласс UICollectionViewLayout или что-то еще?

3 Solutions collect form web for “Как сделать UICollectionViewCell подходящим для его подзонов (с помощью Auto Layout)”

Вы пробовали это:

 [self.view layoutIfNeeded]; [UIView animateWithDuration:0.5 animations:^{ constraintConstantForWidth.constant = subviews.size.width; constraintConstantForHeight.constant = subviews.size.height; [self.view layoutIfNeeded]; }]; 

и сделать приоритет ограничения (низкий = 250)

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

я использовал

 - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 0) { UIButton *button = (UIButton *)[cell viewWithTag:2]; CGRect frame = cell.frame; frame.size.width = button.frame.size.width; cell.frame = frame; } } 

и смог изменить размер моей ячейки на основе ширины кнопки subview в небольшом тестовом приложении.

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

Попробуйте collectionView: layout: sizeForItemAtIndexPath:

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return self.view.frame.size; } 
  • Размещение двух разделов рядом друг с другом в UICollectionView
  • Как включить масштабирование для UICollectionView
  • Просмотр изменений в обновлении UITableView
  • iOS: Как изменить ориентацию UICollectionViewCell?
  • Горизонтальная прокрутка UICollectoinView с интервалом между элементами
  • UICollectionView с динамическим содержимым ячейки - получить ячейку для запоминания состояния
  • ios UICollectionView определяет направление прокрутки
  • Позиция заголовка UICollectionView в режиме горизонтального прокрутки с раскладкой
  • Как добавить desclecting в UICollectionView, но без множественного выбора?
  • iOS 8 UICollectionViewLayout Переключение таинственного сбоя в Swift
  • UICollectionView - подобранная анимация, например приложение для iPhone
  • Interesting Posts

    Настроить UIAlertButton через layoutSubviews => Класс UIAlertButton не найден

    Металлический сбой при добавлении SKSpriteNode в SKEffectNode

    Основные данные – совместное использование NSManagedObjects из нескольких потоков

    Почему я должен выбирать GCD для NSOperation и блоки для приложений высокого уровня?

    Unarchiving SKSpriteNode развращает SKTexture спрайта в iOS 7.1, в противном случае

    Тесты OCUnit выходят из командной строки, но работают в Xcode при использовании сервисов Keychain

    Автоматическая компоновка и строка состояния вызова

    «Профили профилей не найдены» в XCode

    iOS / Objective-C: BLE в периферийном режиме не работает

    Как подклас UITextField и переопределить drawPlaceholderInRect, чтобы изменить цвет закладок

    Загрузка и установка пользовательского шрифта в iOS

    Получить из AnyObject (NSString) в String

    Как локализовать строку с помощью заполнителей форматирования?

    фатальная ошибка: файл Fabric / Fabric.h не найден

    как установить вертикальную позицию текста CATextLayer?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.