如何左/右对齐自定义UITableView单元格

时间:2020-05-14 08:17:36

标签: ios swift uikit

我正在编写一个“聊天机器人”应用,为保存消息气泡,我有一个UITableView和一个自定义的消息气泡形单元格。到目前为止的样子: enter image description here

所有单元格看起来都一样,只是我希望其他所有单元格都等于表格宽度的一半,并且左右对齐。我该如何以编程方式做到这一点?

3 个答案:

答案 0 :(得分:1)

更好的方法-创建两个InMessageCell,OutMessageCell类,并添加所有属性(例如对齐所有元素)隐藏在此单元格内。两个单元的宽度相同,但是所有气泡将在一侧或另一侧移动。它可能继承自主类MessageCell,因此所有逻辑都可能保留在主类中,但UI部分被拆分了。

答案 1 :(得分:1)

使用custom table view cells实现此目的的两种直接方法:

  1. 具有两个不同的单元格类别。他们可以共享大部分实现方式(例如,按班级继承),但布局不同(一个左对齐,一个右对齐)。对于表中的每一行,请确定您需要使用哪个单元格,然后使相应的单元格出队。
  2. 具有一个单元格类,在将其出列时可以切换其布局。 (此切换的确切效果当然取决于您选择的单元布局方式。例如,可以将常量交换为通过@IBOutlet引用的自动布局约束,背景图像的切换或更改对齐方式的属性。堆栈视图等)

这两种方法都取决于决定在UITableViewDataSource的{​​{1}}函数中使用哪种细胞风味。

这是使用第一种方法的一个稍微抽象的示例。在您的tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)中:

UITableViewDataSource

答案 2 :(得分:0)

您可以给表视图单元格一个值来了解它。然后,您可以使用自动布局(SnapKit)使其左对齐或右对齐