IOS 8 GM не обновляет ограничения на представления коллекции

В Xcode 6 Beta 7 и во всех версиях перед ним у меня было представление коллекции, которое обновляло бы его ограничения на его ячейки, когда iPad будет вращаться между пейзажем и портретом. Теперь он совсем не обновляется, и на самом деле он выглядит точно так же, как я оставляю его в XIB, что подразумевает, что он вообще не обновляется. Похоже, что используемые многократно используемые виды обновляются корректно, но ящики, конечно же, не являются.

Кто-нибудь еще сталкивается с этой проблемой? У кого-нибудь есть идеи, как пройти мимо него?

Я использую симулятор iOS 7.1.

Ответы

Ответ 1

Вам нужно сделать подкласс UICollectionViewCell и сделать этот подкласс суперклассом всех ваших ячеек.

Пример:

@interface MDTCollectionViewCell : UICollectionViewCell
@end

@implementation MDTCollectionViewCell

- (void)setBounds:(CGRect)bounds {
    [super setBounds:bounds];
    self.contentView.frame = bounds;
}

@end

Ответ 2

Переопределить пользовательскую ячейку layoutSubviews как временное исправление:

override func layoutSubviews() {
    contentView.frame = bounds
    super.layoutSubviews()
}

Ответ 3

Обходной путь, который я придумал, - использовать симулятор 8.0 для тестирования в симе и построить развертывание с использованием Xcode Beta 7. Когда я создаю с помощью бета-версии 7, приложение работает без этой проблемы на устройствах с использованием iOS 7. Однако это не помогает любому, кто развертывается в магазине приложений, поэтому я приношу свои извинения, если это обходное решение не работает для вашей ситуации.

Ответ 4

в моем классе UICollectionViewCell, который я добавил

override func layoutSubviews() {
    contentView.frame = bounds
    super.layoutSubviews()
}

и я использовал этот код для обновления

dispatch_async(dispatch_get_main_queue(), { () -> Void in
    // in this case vController is UICollectionView
    self.vController.reloadData()
    self.vController.layoutSubviews()
})