Ios “设置”按钮位于“表格视图”单元格的垂直中心。

Ios “设置”按钮位于“表格视图”单元格的垂直中心。,ios,objective-c,Ios,Objective C,我的“表格视图”单元格中有一个按钮和一个标签,它们一个接一个地垂直放置 在我的xib设计中,我放置了按钮,然后在按钮下方放置了标签 如果标签的字符串为空,那么我想将按钮设置为表格视图单元格的垂直中心,并隐藏标签 若我尝试了以下代码,但按钮并没有位于垂直中心位置 if([labelString isEqualToString:@""]){ _label.hidden = YES; _button.contentVerticalAlignment = UIControlContent

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

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

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

若我尝试了以下代码,但按钮并没有位于垂直中心位置

if([labelString isEqualToString:@""]){
    _label.hidden = YES;
    _button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
}

如果能得到解决此问题的建议,这将非常有用。

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

在InterfaceBuilder中:

  • 将按钮和标签放在封闭的包装视图中
  • 将包装器视图约束为在主视图中居中
  • 将按钮和标签约束为固定高度,将标签顶部约束为按钮底部(如果需要,使用间距)
  • 将包装的顶部约束到按钮的顶部
  • 使用两个单独的约束约束包装的底部:一个约束到按钮的底部(但使其处于非活动状态),另一个约束到标签的底部(活动状态)
  • 将这两个约束都设置为outlet,以便可以在代码中访问它们
  • 保持包装高度不受限制。因此,它将“收缩包装”到按钮和标签的组合高度
  • 代码:

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

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

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

    您使用的是自动布局还是框架方法?我使用的是自动布局。@t请优先处理它,或者您可以启用/禁用某些约束谢谢您的帮助。我已经使用约束的优先级来解决它。谢谢。