在表格视图单元格的垂直中心设置按钮。

时间:2017-03-31 09:40:50

标签: ios objective-c

我的表格视图单元格中有一个按钮和一个标签,一个接一个地垂直放置。

在我的xib设计中,我放置了我的按钮然后在它下方放置了我的标签。

如果标签的字符串为空,那么我想在表视图单元格中将按钮设置为垂直居中并隐藏标签。

如果为我的实现尝试了以下代码,但按钮不在垂直中心位置。

if([labelString isEqualToString:@""]){
    _label.hidden = YES;
    _button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
}
如果得到解决此问题的建议,将会有所帮助。

1 个答案:

答案 0 :(得分:0)

一种方法:使用约束的动态设置。

在InterfaceBuilder中:

  1. 将您的按钮和标签放在封闭的包装视图中。
  2. 将包装器视图限制为在主视图中居中。
  3. 将按钮和标签限制在固定高度,并将标签的顶部约束到按钮的底部(如果需要,可以使用间距)。
  4. 将包装器的顶部限制在按钮的顶部。
  5. 使用两个单独的约束来约束包装器的底部:一个位于按钮的底部(但使其处于非活动状态),一个位于标签的底部(活动。)。
  6. 制作这两个约束插座,以便您可以在代码中访问它们。
  7. 保留包装纸高度,否则不受约束。因此,它将“收缩包装”到按钮和标签的组合高度。
  8. 在代码中:

    当标签为空时,激活将包装器固定到按钮而不是标签上的约束:

        BOOL hideLabel = [labelString isEqualToString:@""];
        _label.hidden = hideLabel;
        _wrapperToButtonConstraint.active = hideLabel;
        _wrapperToLabelConstraint.active = !hideLabel;
    

    现在收缩包装效果将使包装器具有与按钮相同的高度,并且由于包装器居中,因此按钮将居中。