如何将 UITableViewCell 的内容视图转换为 Interface Builder 中的普通 UIView?
Posted
技术标签:
【中文标题】如何将 UITableViewCell 的内容视图转换为 Interface Builder 中的普通 UIView?【英文标题】:How to convert a UITableViewCell's content view to a normal UIView in Interface Builder? 【发布时间】:2014-09-13 16:04:25 【问题描述】:我在 Interface Builder 中设计了一个复杂的 UITableViewCell,它有很多子视图和约束。问题是它们中的许多都是内容视图的直接子级。我现在想在内容视图和我的所有子视图之间插入一个 UIView。
或者,另一种思考方式是想象我想在没有表格视图的普通 UIViewController 上包含我的所有单元格内容。
无需手动重新创建所有约束的最简单方法是什么?
【问题讨论】:
您想要这样做的真正原因是什么?您可以(如果您提到的是您真正想要做的)从单元格中删除 contentView,并将其添加到另一个视图。 【参考方案1】:我不确定是否有人写过这个解决方案,但这个解决方案有点老套。如果您想将UITableViewCell
contentView 转换为基本视图,您必须按照以下步骤操作:
-
将故事板作为源代码作为 XML 文件打开。您可以在编辑此文件时使用一些 XML 编辑器来帮助您
在故事板 XML 文件中查找
<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>
在这些步骤之后,您将准备好在情节提要中编辑视图,并且您可以根据需要从表格中删除原始单元格。
【讨论】:
【参考方案2】:非常简单,您只需选择所有视图并在上方菜单中选择 EDITOR->EMBED IN->VIEW 唯一的问题是它将添加一种 20pts 的填充。查看answer了解更多详情
【讨论】:
不幸的是,这不会保留安装在我选择的任何***视图上的约束。 true.. 但我想这是唯一的选择,除非你以编程方式更新约束。 目前有更好的解决方案 Editor -> Embed In -> View without inset以上是关于如何将 UITableViewCell 的内容视图转换为 Interface Builder 中的普通 UIView?的主要内容,如果未能解决你的问题,请参考以下文章
如何将附件视图背景设置为与 UItableViewCell 中的内容视图相同的背景?
如何使添加到 UITableViewCell 内容视图的 UIView 适合其范围?
通过情节提要删除 UITableViewCell 中内容视图的填充
如何通过 IBAction 更改 UITableViewCell 内容视图?