UIView子视图自动布局问题

时间:2016-04-28 13:48:38

标签: ios objective-c uitableview uiview autolayout

我有UITableView Cell,其中4个UIViews按照这样的垂直顺序排列,

enter image description here

在每个UIView中,我都有两个这样的标签,

enter image description here

我已经为所有四个UIViews的高度约束采用了IBOutlet,并且当数据在该视图中不可用时,我想使视图的高度为0。问题是由于视图内UILabel的10 px底部约束,View未达到0高度。

我得到的是这样的,

enter image description here

处理约束的代码

    NSString *toName = [self jointNameFromArray:evidence.arrTo];
    if ([Utility isEmptyString:toName]) {
        cell.toViewHeight.constant = 0;
    }
    else {
        cell.lblToName.text = toName;
    }

    NSString *fromName = [self jointNameFromArray:evidence.arrFrom];
    if ([Utility isEmptyString:fromName]) {
        cell.fromViewHeight.constant = 0;
    }
    else {
        cell.lblFromName.text = fromName;
    }

    NSString *ccName = [self jointNameFromArray:evidence.arrCc];
    if ([Utility isEmptyString:ccName]) {
        cell.ccViewHeight.constant = 0;
    }
    else {
        cell.lblCCName.text = ccName;
    }

    NSString *custName = [self jointNameFromArray:evidence.arrCustodian];
    if ([Utility isEmptyString:custName]) {
        cell.custViewHeight.constant = 0;
    }
    else {
        cell.lblCustName.text = custName;
    }    
     [cell layoutIfNeeded];

2 个答案:

答案 0 :(得分:1)

如果您定位的是iOS 9+,我建议您使用def change_sign(list,n): if n in list1: return list1 #Don't know what to put here elif n not in list1: print("The number is not in the list") ,因为它只是将您的视图的UIStackView属性设置为{{{ 1}}。

https://www.raizlabs.com/dev/2016/04/uistackview/

如果您无法使用.hidden,则需要将其中一个垂直填充约束设置为低于高度约束的优先级。您还需要将true设置为UIStackView

答案 1 :(得分:0)

以编程方式设置约束并编写逻辑,因为你想要它是个好主意而且不要忘记设置layoutifnedded。