Я использую Xcode 6 Beta 3, iOS 8 SDK. Сборка целевой iOS 7.0 с использованием Swift. Пожалуйста, обратитесь к моей проблеме шаг за шагом со скриншотами ниже.
У меня есть UICollectionView в раскадровке. 1 Прототип UICollectionViewCell, который содержит 1 метку в центре (без правила автоматического изменения размера). Фиолетовый фон должен был отмечать contentView, который генерируется во время выполнения Ячейкой. Это представление будет изменено должным образом на основе моего UICollectionViewLayoutDelegate в конечном итоге, но не на iOS 7. Обратите внимание, что я использую Xcode 6, и проблема возникает только на iOS 7.
Когда я создаю приложение на iOS 8. Все в порядке.
Примечание: фиолетовый - это contentView , синий - моя UIButton с закругленным углом.
Однако в iOS 7 все дочерние элементы внутри ячейки внезапно сжимаются до кадра (0,0,50,50) и больше не соответствуют моему правилу авторазмера.
Я предполагаю, что это ошибка в iOS 8 SDK или Swift или, может быть, Xcode?
Обновление 1: эта проблема все еще существует в официальном Xcode 6.0.1! Лучший обходной путь подобен тому, что KoCMoHaBTa предложил ниже, установив кадр в cellForItem ячейки (хотя вы должны создать подкласс для своей ячейки). Оказалось, что это несовместимость между iOS 8 SDK и iOS 7 (проверьте ответ ecotax ниже, цитируемый Apple).
Обновление 2: вставьте этот код в начало вашего cellForItem, и все должно быть в порядке:
/** Xcode 6 on iOS 7 hot fix **/
cell.contentView.frame = cell.bounds;
cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
/** End of Xcode 6 on iOS 7 hot fix **/
contentView
изменения размера ячейки работает нормально, чтобы обойти проблему. Я предполагаю, что в iOS 8 Apple что-то изменила в способе обработки представлений содержимого ячейки при создании в Интерфейсном Разработчике (который в любом случае все еще является чем-то вроде черного ящика). Но тот факт, что он изменяет поведение при настройке на iOS 7, безусловно, является ошибкой.
contentView
края к краям ячейки.