UITableViewCell在使用xcode6 beta6接口构建器的iOS7和iOS8模拟器中表现不同

前端之家收集整理的这篇文章主要介绍了UITableViewCell在使用xcode6 beta6接口构建器的iOS7和iOS8模拟器中表现不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请看下面3个表视图单元格在同一个应用程序中,单元格的高度在界面构建器中为54,边框是在代码中使用CAShapeLayer创建的,高度为44.由于我在项目开发期间从 xcode5切换到 xcode6,所以uitableviewcell的一部分在xcode5中创建,部分在xcode6中创建,并且有一些单元在xcode5中创建,后来在xcode6中更改.

搜索.使用xcode5创建,所需的样式

图像2.使用xcode6 beta6创建,在iOS8模拟器中显示,公开指示符放错地方,并且文本被禁止使用

图像3.使用xcode6 beta6的image2的相同单元格,但在iOS7.1设备中运行,披露指示符错位

我比较了界面构建器中uitableviewcell的所有设置,并找到了NO差异.

我比较了xxx.storyboard的源文件,最后得到了不同的观点:

case1:’tableViewCell’标签,xcode5版本是:

<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"/>

case2:’tableViewCell’标签,xcode6 beta6版本在下面,NOTICE,< rect key =“frame”...>在创建新的uitableviewcell时缺少

<tableViewCell contentMode="scaleToFill" selectionStyle="none" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="xxxCell" rowHeight="54" id="eav-sl-Yrd" customClass="xxxCell">

case3: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没有处理< rect key =“frame”...>在.storyboard文件标记,并会导致uitableviewcell错位.

补充:在上述所有场景中,代码都实现了heightForRowAtIndexPath,并返回54.

我的问题是:

>我没有找到如何将披露指标放在与xcode5相同的位置
>缺少< rect key =“frame”...>一个错误或被xcode6中的其他标签取代?可能与iOS8中的单元格自动调整大小有关吗?
>还有其他解决方案可以让uitableviewcell正确吗?我目前正在手动修改.storyboard文件添加< rect key =“frame”...>使用xcode6 beta6为每个新创建的uitableviewcell标记,并且它容易出错.

谢谢.

解决方法

关于错放边框CAShapeLayer – 您需要覆盖自定义单元格类的layoutSubviews函数并相应地更新图层框架.

也不要使用cell的bounds属性,因为它与帧大小不同:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.borderLayer.frame = CGRectMake(0,self.frame.size.width,self.frame.size.height);
}

关于披露指标的偏移量 – 我无法从您的屏幕截图中重现问题…

猜你在找的iOS相关文章