【问题标题】:Static or Prototype UITableViewCell subviews are resized incorrectly in Storyboard on Xcode 6.1.1, iOS 8.1 SDK在 Xcode 6.1.1、iOS 8.1 SDK 的 Storyboard 中,静态或原型 UITableViewCell 子视图的大小不正确
【发布时间】:2015-01-31 15:40:45
【问题描述】:

所以我更新到之前的 Xcode 6.1 和今天的 6.1.1。我注意到在 Storyboard 中使用静态/原型 UITableViewCell(或原型 UICollectionViewCell)时存在问题。在设备/模拟器上运行时,所有具有某些 Autoresizing 掩码的子视图都会被错误地调整大小。

UISlider 作为静态 UITableViewCell 的子视图

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

观察Slider太长了,从右边消失了

我已经向 Apple 提交了错误报告。希望尽快收到回复。

【问题讨论】:

  • 有人更新到 Xcode 6.1.1 并使用 UICollectionViewCell 了吗?
  • 发生同样的情况.. 解决方案??

标签: uitableview xcode6 uicollectionviewcell autoresize ios8.1


【解决方案1】:

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

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

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

为简洁起见,上面的许多键和属性已被省略。上面缺少的是用于tableViewCelltableViewCellContentViewrect 键。自动调整大小依赖于初始帧大小来确定从右侧/底部的偏移量。如果没有初始帧大小(由rect 键给出),初始帧计算为 0,0,0,0,这不会影响锚定到顶部或左侧的项目,但会(当然)影响锚定到的项目右/下。

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

<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 中显示的内容视图的宽度/高度(灰色)是应该放入情节提要的内容(手动)。

我应该补充一点,Xcode 在编辑时似乎不会从情节提要中删除这些 rect 键,因此在编辑完成后情节提要仍然可以使用 Xcode 完全编辑。

【讨论】:

  • 这是一个了不起的发现! &lt;collectionViewCell&gt; 上也存在问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
相关资源
最近更新 更多