我正在使用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测试版中的一个错误,对吧?
我可以将这个错误发送到Apple?
答案 0 :(得分:6)
他们忘记为UICollectionViewCell的contentView设置autoresizingMask
解决这个问题
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
答案 1 :(得分:1)
这似乎不是一个错误,但使用Xcode 6定位iOS 7设备的不兼容问题。ecotax's post更详细地描述了这一点,但这是Apple DTS的回复:
在iOS 7中,单元格的内容视图通过自动调整蒙版自行调整大小。在iOS 8中,这已更改,单元格停止使用自动调整蒙版并开始调整layoutSubviews中的内容视图大小。如果在iOS 8中对nib进行编码然后在iOS 7上对其进行解码,则您将拥有一个没有自动调整掩码的内容视图,并且没有其他方法可以自行调整大小。因此,如果您更改了单元格的框架,则内容视图将不会跟随。
正在部署回iOS 7的应用程序必须通过调整内容视图本身,添加自动调整掩码或添加约束来解决此问题。
Alexey的解决方案可以解决这个问题:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}