ios - 标签为空时的 UITableView 单元格垂直居中

标签 ios uitableview

我有一个 UITableViewCell,它包含两个垂直放置的标签,一个在另一个之上,我正在使用 AutoLayout。 当两个标签都有一些文本时,单元格工作(并且看起来)正常。

不过,有时顶部标签不包含任何文本,在这种情况下,我希望单元格具有相同的高度,但底部标签垂直居中。是否可以在运行时不修改约束的情况下使用 AutoLayout 来实现?

最佳答案

我认为如果不在运行时修改某些东西 就无法实现这一点。如果您想在不以编程方式更改约束的情况下执行此操作,我会看到一些选项,有些选项比其他选项更困惑:

第一个选项,您可以在单元格中设置三个标签。两个垂直堆叠的标签和一个垂直覆盖整个单元格的标签,与其他两个标签完全重叠。在运行时,您可以确定底部标签是否不应包含文本,然后将重叠的顶部标签设置为您之前在顶部垂直堆叠标签上设置的文本。

第二种选择,您可以使用具有当前两个标签高度的标签。设置这个新的(2x 高度)标签以允许 2 行(可以在 InterfaceBuilder 端选项中完成)。然后在运行时用两个标签的文本插入 label.text 属性。如果第二个标签有文本,则在标签之间放置一个换行符。它看起来像这样

在 Swift 中:

my2xLabel.text = "\(firstLabelString) \n \(secondLabelString)"

在 Obj-C 中:

my2xLabel.text = [NSString stringWithFormat:@"%@ \n %@", firstLabelString, secondLabelString];

综上所述,在运行时修改约束可能是实现这种格式化的一种不那么棘手的方法。

关于ios - 标签为空时的 UITableView 单元格垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747081/

相关文章:

iphone - 基于导航的应用程序中 UITabBar 的替代品

swift - 使用 reloadData() 使滚动条在 UITableView 上始终可见

ios - 如何在 Swift 的 tableView 单元格中添加一个开关?

ios - 确定 NSManagedObject 子类的类型

ios - 如何使用 Facebook v4 获取所有好友

ios - 在 IOS 9 上使用 AVPlayer 和 Swift 反向播放视频

ios - 如何在消息上注册自定义操作

ios - 表格 View 动态高度

ios - 按下按钮时更改 anchor /约束

ios - 不再使用时从 UITableViewCell 中移除观察者