我用的是 Xcode 6 Beta 3,iOS 8 SDK。使用 Swift 构建目标 iOS 7.0。请参考我的问题一步一步与下面的截图。
我在故事板中有一个 UICollectionView。1原型 UICollectionViewCell,中心包含1个标签(无自动调整大小规则)。紫色背景是为了标记一个 contentView,我猜它是由 Cell 在运行时生成的。该视图最终将根据我的 UICollectionViewLayoutgenerate 进行适当调整,但不会在 iOS7上进行调整。注意,我使用的是 Xcode 6,问题只发生在 iOS 7上。
当我在 iOS8上构建应用程序时,一切都很好。
注: 紫色是 ContentView,蓝色是我的圆角 UIButton。
然而,在 iOS7中,Cell 中所有的子视图突然缩小到(0,0,50,50)的框架,再也不符合我的自动调整大小规则了。
我假设这是 iOS8SDK 或者 Swift 或者 Xcode 中的一个 bug?
更新1: 这个问题在官方的 Xcode 6.0.1中仍然存在!最好的解决办法是像 KoCMoHaBTa 建议的那样,在 cell 的 cellForItem 中设置框架(但是您必须对 cell 进行子类化)。事实证明,这是 iOS8SDK 和 iOS7之间的不兼容性(请查看下面引自苹果的 ecotax 的回答)。
更新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 **/