UITableViewCell在使用xcode6 beta6接口生成器的iOS7和iOS8模拟器中表现不同
请在同一个应用程序中查看以下3个表格视图单元格,在interface builder中单元格的高度为54,边框是使用代码中的CAShapeLayer创建的,高度为44。由于我在项目开发期间从xcode5切换到了xcode6,所以uitableviewcell的一部分在xcode5中创建,另一部分在xcode6中创建,还有一些单元格在xcode5中创建,后来在xcode6中更改 图1。使用所需样式xcode5创建 图2。使用xcode6 beta6创建,显示在iOS8模拟器中,UITableViewCell在使用xcode6 beta6接口生成器的iOS7和iOS8模拟器中表现不同,ios,uitableview,xcode6-beta6,Ios,Uitableview,Xcode6 Beta6,请在同一个应用程序中查看以下3个表格视图单元格,在interface builder中单元格的高度为54,边框是使用代码中的CAShapeLayer创建的,高度为44。由于我在项目开发期间从xcode5切换到了xcode6,所以uitableviewcell的一部分在xcode5中创建,另一部分在xcode6中创建,还有一些单元格在xcode5中创建,后来在xcode6中更改 图1。使用所需样式xcode5创建 图2。使用xcode6 beta6创建,显示在iOS8模拟器中,泄漏指示器错位,文
泄漏指示器
错位,文本偏移
图3。image2的同一个单元格使用xcode6 beta6,但在iOS7.1设备中运行,泄漏指示器
放错了位置
我比较了interface builder中uitableviewcell的所有设置,没有发现任何差异
我比较了xxx.storyboard的源文件,最后得出了不同的观点:
案例1:xcode5版本的“tableViewCell”标记是:
<tableViewCell contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="xxCell" rowHeight="54" id="far-Kn-fRP" customClass="xxCell">
<rect key="frame" x="0.0" y="119" width="320" height="54"/>
案例2:下面是“tableViewCell”标记,即xcode6 beta6版本,请注意,创建新uitableviewcell时,<tableViewCell contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="xxxCell" rowHeight="54" id="eav-sl-Yrd" customClass="xxxCell">
案例3:image2和image3中的场景是在xcode5中创建的uitableviewcell,默认高度为44,并在xcode6 beta6中修改,将高度更改为54,源为:
<tableViewCell contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="xxxCell" rowHeight="54" id="eav-sl-Yrd" customClass="xxxCell">
<rect key="frame" x="0.0" y="119" width="320" height="44"/>
总之,xcode6 beta6似乎没有处理.storyboard文件中的heightforrowatinexpath
,并返回54
我的问题是:
披露指标放在与xcode5相同的位置
谢谢。关于错放边界层-您需要覆盖自定义单元格类的
布局子视图
函数,并相应地更新层的框架
也不要使用单元格的bounds属性,因为它与帧大小不同:
- (void)layoutSubviews
{
[super layoutSubviews];
self.borderLayer.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
}
关于披露指标的偏移量-我无法从您的屏幕截图中重现问题…单元格内容是如何构造的?所有内容都在
contentView
中吗?是否有限制?这些约束是连接到单元格还是连接到contentView
(这非常重要)?另外,您是否知道新的iOS 8自动行高功能?这可能会影响单元格的垂直布局。“我目前正在手动修改.storyboard文件,而且很容易出错。”我觉得您构建单元格的方式有误。@matt感谢您的快速评论。这两个标签作为“contentView”的子视图放置,并相对于“superView”(本例中的contentView)设置前导和中心位置的约束,具有固定的宽度和高度。我的最后一句话“我目前正在手动修改.storyboard文件”意味着我必须为使用xcode6 beta6 interface builder创建的uitableviewcell手动添加heightforrowatinexpath
。我的问题中的示例在函数中返回54:heightforrowtaindexpath
谢谢您的评论,但这里的问题是文本和披露指标的错位,而不是现金支付者。顺便说一句,在我使用xcode6.1之后,我从来没有看到过这个问题