我正在使用Xcode 6 Beta 3,iOS 8 SDK。使用Swift构建目标iOS 7.0。请通过以下屏幕截图逐步说明我的问题。
我在Storyboard中有一个UICollectionView。1个原型UICollectionViewCell,中间包含1个标签(无自动调整大小规则)。紫色背景用来标记由我猜想的Cell在运行时生成的contentView。该视图最终将根据我的UICollectionViewLayoutDelegate正确调整大小,但不会基于iOS7。请注意,我使用的是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的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 **/
contentView已损坏。也可以将其固定在awakeFromNib中
对象:
- (void)awakeFromNib {
[super awakeFromNib];
self.contentView.frame = self.bounds;
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
Swift3:
override func awakeFromNib() {
super.awakeFromNib()
self.contentView.frame = self.bounds
self.contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句