我使用的是Xcode 6 Beta 3,iOS 8 SDK.使用Swift构建目标iOS 7.0.请用下面的截图一步一步地参考我的问题.

我在故事板上有一个UICollectionView.1个原型UICollectionViewCell,中心包含1个标签(无自动调整大小规则).紫色背景用于标记运行时由单元格生成的contentView.最终,该视图的大小将根据我的UICollectionViewLayoutDelegate进行适当调整,但不会在iOS 7上进行调整.请注意,我使用的是Xcode 6,问题只发生在iOS 7上.

当我在iOS 8上构建应用程序时.一切都很好.

Note: Purple is the contentView, Blue is my UIButton with rounded corner.

http://i.stack.imgur.com/uDNDY.png

然而,在iOS 7上,单元格内的所有子视图突然收缩到(0,0,50,50)帧,不再符合我的自动调整大小规则.

http://i.stack.imgur.com/lOZH9.png

我猜这是iOS 8 SDK或Swift或Xcode中的一个bug?


Update 1:这个问题仍然存在于官方的Xcode 6.0.1中!最好的解决方法是像KoCMoHaBTa在下面建议的那样,在cellForItem中设置单元格的框架(不过您必须对单元格进行子类化).事实证明,这是iOS 8 SDK和iOS 7之间的不兼容(请查看下面引用苹果的ecotax回答).

Update 2:

/** 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中修复

ObjC:

- (void)awakeFromNib {

    [super awakeFromNib];

    self.contentView.frame = self.bounds;
    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}

迅捷3:

override func awakeFromNib() {
    super.awakeFromNib()

    self.contentView.frame = self.bounds
    self.contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}

Objective-c相关问答推荐

iOS9 - 这个应用程序正在从后台线程修改自动布局引擎 - 在哪里?

UIAlertController:supportedInterfaceOrientations 被递归调用

检测时间格式是 12 小时还是 24 小时格式

iPhone:推送通知后如何删除徽章?

获取 Objective-C 类或实例的所有方法

带有语法高亮的 UITextView

动态转发: suppress Incomplete Implementation 警告

判断对象是 NSArray 还是 NSDictionary

通过 ObjC 类别覆盖方法并调用默认实现?

UIWebView 不会zoom 内容以适应

iOS:使用设备修饰符加载 xib 文件?

在 NSNumbers 的 NSArray 中查找最小值和最大值

委托如何在 Objective-C 中工作?

distanceFromLocation - 计算两点之间的距离

如何将 NSNumber 转换和比较为 BOOL?

隐藏 NSTableView 标头?

笔尖中的原型单元而不是故事板

`[super viewDidLoad]` 约定

在 iPhone 上查找用户的 Documents 目录的最佳方法是什么?

UIPageViewController,如何在不打乱数据源指定顺序的情况下正确跳转到特定页面?