Xcode 6 beta4,UIButton 在 collectionviewcell 中不负责
-
20-12-2019 - |
题
我正在使用 Xcode 6.0 beta 4,我发现按钮 UICollectionViewCell
不是对点击的响应。
详情如下:
UICollectionViewController
--- UICollectionViewCell
------ UIButton
(UIButton
有两个 autolayout
限制条件 UIButton
在垂直中心和水平中心 Cell
)
现在使 cell
大小是这样的:(300, 1000)
在iPhone模拟器或iOS 7.0或7.1.x的设备中运行应用程序,按钮不可触摸,但在iOS 8.0模拟器中测试可以。另外如果我换手机 size
到 (300, 200)
, ,按钮起作用。
我认为这是 Xcode beta 版本中的一个错误,对吗?
我可以在哪里向 Apple 发送错误?
解决方案
他们忘记为 UICollectionViewCell 的 contentView 设置 autoresizingMask
这个修复它
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
其他提示
看来这实际上并不是一个错误,而是使用 Xcode 6 定位 iOS 7 设备的不兼容问题。 生态税的帖子 对此进行了更详细的描述,但以下是 Apple DTS 的响应:
在 iOS 7 中,单元格的内容视图通过自动调整大小蒙版自行调整大小。在 iOS 8 中,这一点发生了变化,单元格停止使用自动调整大小蒙版,并开始在layoutSubviews 中调整内容视图的大小。如果笔尖在 iOS 8 中编码,然后在 iOS 7 上解码,您将获得一个没有自动调整大小掩码的内容视图,也没有其他方法可以调整自身大小。因此,如果您更改单元格的框架,内容视图将不会跟随。
部署回 iOS 7 的应用程序必须通过调整内容视图本身的大小、添加自动调整大小蒙版或添加约束来解决此问题。
Alexey 上面的解决方案可以解决这个问题:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}