静态或原型UITableViewCell子视图在Xcode 6.1.1,iOS 8.1 SDK上的Storyboard中调整不正确

时间:2014-12-03 07:03:00

标签: uitableview xcode6 uicollectionviewcell autoresize ios8.1

所以我更新到 Xcode 6.1更早和6.1.1今天。我注意到在Storyboard中使用Static / Prototype UITableViewCell(或Prototype UICollectionViewCell)时出现了问题。在设备/模拟器上运行时,具有某些自动调整遮罩的所有子视图都将无法正确调整大小。

UISlider as a subView of the Static UITableViewCell

UISlider作为Static UITableViewCell的子视图

Autoresizing rule is Flexible Width. Or Flexible LeftMargin also causes the problem.

自动调整规则是灵活宽度。或灵活的LeftMargin也会导致问题。

Observing the Slider is too long, went off the screen the the right

观察滑块太长,偏离屏幕右侧

我已经向Apple提交了一份错误报告。希望很快收到答复。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并找到了适合我的解决方案。似乎Xcode没有(总是)记录表格视图单元格的初始帧大小及其内容视图。

如果您在另一个编辑器中打开故事板(最好关闭Xcode),并查看您的单元格,您应该找到以下内容:

<tableViewCell ...>
   <autoresizingMask .../>
   <tableViewCellContentView ...>

为简洁起见,省略了上面的许多键和属性。上面缺少的是recttableViewCell的{​​{1}}个密钥。自动调整依赖于初始帧大小来确定右/底的偏移量。没有初始帧大小(由tableViewCellContentView键给出),初始帧计算为0,0,0,0,它不会影响锚定到顶部或左侧的项目,但是(当然)影响固定在右侧/底部的物品。

要解决此问题,请确保每个rectrect都有一个(正确的)tableViewCell密钥,例如:

tableViewCellContentView

如果您为单元格启用了附件视图,则可能需要缩小该单元格的内容视图宽度。内容视图的Xcode(灰色)中显示的宽度/高度应该放在故事板中(手动)。

我应该补充一点,Xcode在编辑时似乎没有从故事板中删除这些<tableViewCell ...> <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> <autoresizingMask .../> <tableViewCellContentView ...> <rect key="frame" x="0.0" y="0.0" width="320" height="43"/> 键,因此在编辑完成后,故事板仍应完全可以使用Xcode进行编辑。