Ich verwende Xcode 6 Beta 3, iOS 8 SDK. Erstellen Sie das Ziel iOS 7.0 mit Swift. Bitte beziehen Sie sich Schritt für Schritt auf mein Problem mit den folgenden Screenshots.
Ich habe eine UICollectionView im Storyboard. 1 Prototyp UICollectionViewCell, der 1 Label in der Mitte enthält (keine automatische Größenregel). Lila Hintergrund sollte eine Inhaltsansicht markieren, die zur Laufzeit von der Zelle generiert wird, denke ich. Die Größe dieser Ansicht wird basierend auf meinem UICollectionViewLayoutDelegate eventuell ordnungsgemäß geändert, jedoch nicht unter iOS 7. Beachten Sie, dass ich Xcode 6 verwende und das Problem nur unter iOS 7 auftritt.
Wenn ich die App auf iOS 8 baue. Alles ist in Ordnung.
Hinweis: Lila ist die Inhaltsansicht , Blau ist mein UIButton mit abgerundeter Ecke.
Unter iOS 7 schrumpfen jedoch alle Unteransichten in der Zelle plötzlich auf den Rahmen von (0,0,50,50) und entsprechen nie mehr meiner Autoresizing-Regel.
Ich nehme an, dies ist ein Fehler in iOS 8 SDK oder Swift oder vielleicht Xcode?
Update 1: Dieses Problem besteht weiterhin im offiziellen Xcode 6.0.1! Die beste Lösung ist die, die KoCMoHaBTa unten vorgeschlagen hat, indem der Frame in cellForItem der Zelle festgelegt wird (Sie müssen Ihre Zelle jedoch in Unterklassen unterteilen). Es stellte sich heraus, dass dies eine Inkompatibilität zwischen iOS 8 SDK und iOS 7 ist (siehe die unten von Apple zitierte Antwort von ecotax).
Update 2: Fügen Sie diesen Code am Anfang Ihres cellForItem ein und alles sollte in Ordnung sein:
/** 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
Größenänderung mit der Zelle zu erzwingen , funktioniert gut, um das Problem zu umgehen. Ich vermute, dass Apple in iOS 8 etwas an der Art und Weise geändert hat, wie Ansichten von Zelleninhalten behandelt werden, wenn sie in Interface Builder erstellt werden (was ohnehin immer noch eine Art Black Box ist). Aber die Tatsache, dass es das Verhalten beim Targeting von iOS 7 ändert, ist sicherlich ein Fehler.
contentView
Kanten an die Zellenränder hefte.