Я використовую Xcode 6 Beta 3, iOS 8 SDK. Збірка Target 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 (перевірте відповідь екотакси нижче, цитовану з 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 щось змінила щодо того, як обробляються погляди на вміст комірок, коли вони створюються в Interface Builder (що все одно є трохи чорною скринькою). Але той факт, що він змінює поведінку під час націлювання на iOS 7, безумовно, помилка.
contentView
краї до країв комірки.