我在Interface Builder中设计了一个复杂的UITableViewCell,它有许多子视图和约束。问题是他们中的许多人都是内容视图的直接子女。我现在想在内容视图和所有子视图之间插入UIView。
或者,考虑这个的另一种方式是想象我想在没有表视图的普通UIViewController中包含我的所有单元格内容。
在不必手动重新创建所有约束的情况下,最简单的方法是什么?
非常简单,您只需选择所有视图,然后在上方菜单中选择EDITOR-> EMBED IN-> VIEW 唯一的问题是它会添加一种20pts的填充。查看此answer了解更多详情
我不确定是否有人写过这个解决方案,但解决方案有点hacky。如果要将UITableViewCell
contentView转换为基本视图,则必须执行以下步骤:
<tableViewCell>
元素的数组<tableViewCell>
标签内找到<tableViewCellContentView>
元素。将其内容复制到XML文件中的某个位置(最好的想法是<subviews>
元素,以避免在编辑XML文件时出现一些错误)<tableViewCellContentView key="contentView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"
转换为<view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO"
。我相信在这一步中生成的XML存在一些可能的差异,但原则很明显。只需创建一个空视图以检查空视图的有效XML设置。</tableViewCellContentView>
转换为</view>
完成这些步骤后,您将可以在故事板内编辑视图,如果需要,可以从表中删除原始单元格。