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()
})