自定义 tableviewcell 和自动布局

Posted

技术标签:

【中文标题】自定义 tableviewcell 和自动布局【英文标题】:custom tableviewcell and autolayout 【发布时间】:2015-10-02 12:39:52 【问题描述】:

到目前为止,我已经使用了没有 IB 的自定义 tableviewcell,用于一种屏幕尺寸和一种方向。

现在我的应用程序使用自动布局,因此它将支持各种设备方向和各种屏幕尺寸(iPhone、iPad)

现在如何设计带有自动布局的自定义表格视图单元格。

我通常对框架进行硬编码。

现在我也可以自动布局我的 tableview 单元格了。

不使用 IB 是否仍然可以使用 Tableview 单元格。

请帮忙

【问题讨论】:

是的,这是可能的。但是为什么要设计一个没有 IB 的单元呢?当您没有正确应用约束时,调试表格单元格将非常复杂 @Mr.T 我以前也有同样的感觉,但是一旦你有几个约束工厂和类别来添加约束,实际上没有NIB会更简单,这当然取决于关于细胞的复杂性,但根据我对非常复杂的细胞的经验,最终根本不使用笔尖会更容易。 我必须通过查找设备的大小和方向来手动在代码中创建约束 @OscarGomez - 你能指导我怎么做吗? @King 看我的回答,设置约束真的和 IB 没有什么不同 【参考方案1】:

您绝对可以在不使用 IB 的情况下使用任何类型的 UIView,这包括 UITableViewCell。你能做的就是在你的

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

方法,您可以配置所有约束,您可以将您想要的tableview的每个子视图设置为CGRectZero,并将它们添加到单元格的contentView,单元格的contentView,将根据tableview大小自动具有适当的大小和插图。因此,在您的 initWithStyle 中将所有子视图添加到内容视图之后:

[self.contentView addSubview:mySubview]

您可以调用自己的私有方法,例如 configureConstraintsMyCustomTableViewCell,并在那里配置所有约束。

【讨论】:

所以我必须根据屏幕的大小和方向应用我自己的框架逻辑 是的,但是您根本不需要关心尺寸和方向是什么,我的意思是,如果您想要例如横向比纵向更宽的东西,只需不要t 发送了一个宽度约束,但将前导和尾随约束设置为具有您想要的一些常量值的超级视图。 我无法理解清楚,你能解释一下或给我一个示例吗..我无法理解 @King 哪一部分可以帮助你理解? 你能给我一个 configureConstraintsMyCustomTableViewCell 的样本吗?对我有帮助

以上是关于自定义 tableviewcell 和自动布局的主要内容,如果未能解决你的问题,请参考以下文章

方向更改时的自定义 TableViewCell 自动布局问题

iOS 7 中自定义 TableViewCell 中的自动布局问题

自定义 tableviewcell 动态高度未根据约束更新(以编程方式自动布局)

标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局

iOS:如何在其附件视图更改时触发 tableViewCell 的约束/自动布局刷新?

在 TableViewCell 中自动布局两个标签?