gpt4 book ai didi

ios - UITableViewCell 在使用 xcode6 beta6 界面生成器的 iOS7 和 iOS8 模拟器中表现不同

转载 作者:可可西里 更新时间:2023-11-01 03:35:04 26 4
gpt4 key购买 nike

请看下面同一应用中的 3 个表格 View 单元格,单元格的高度在界面生成器中为 54,边框是在代码中使用 CAShapeLayer 创建的,高度为 44。由于我在项目期间从 xcode5 切换到 xcode6开发,所以uitableviewcell的一部分是在xcode5中创建的,一部分是在xcode6中创建的,还有一些cell是在xcode5中创建的,后来在xcode6中改变了。

图片 1。使用 xcode5 创建所需的样式 uitableviewcell built in xcode5 interface builder

图片2。使用xcode6 beta6创建,在iOS8模拟器中显示,disclosure indicator错位,文字偏移 uitableviewcell built in xcode6 beta6, displayed in iOS8 simulator

图片3。 image2 的相同单元格使用 xcode6 beta6,但在 iOS7.1 设备上运行,disclosure indicator 放错了位置 uitableviewcell built in xcode6 beta6, displayed in iOS7.1 device

我比较了 Interface Builder 中 uitableviewcell 的所有设置,没有发现任何差异。

并且对比了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版本,注意,创建时缺少 一个新的 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 似乎没有处理 .storyboard 文件中的 < rect key="frame"...> 标签,并且会导致 uitableviewcell 错位。

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

我的问题是:

  1. 我没有找到如何将 disclosure indicator 放在与 xcode5 相同的位置

  2. 的缺失是 bug 还是被 xcode6 中的其他标签取代了?可能与iOS8中的cell auto sizing特性有关?

  3. 还有其他解决方案可以使 uitableviewcell 正确吗?我目前正在手动修改 .storyboard 文件以使用 xcode6 beta6 为每个新创建的 uitableviewcell 添加 < rect key="frame"...> 标签,这很容易出错。

谢谢。

最佳答案

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

也不要使用单元格的 bounds 属性,因为它不同于框架大小:

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

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

关于ios - UITableViewCell 在使用 xcode6 beta6 界面生成器的 iOS7 和 iOS8 模拟器中表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com