簡體   English   中英

UIView子視圖自動布局問題

[英]UIView subview autolayout issue

我有UITableView單元格,其中4個UIView像這樣垂直排列,

在此處輸入圖片說明

在每個UIView中,我都有兩個這樣的標簽,

在此處輸入圖片說明

我已經為所有四個UIView的“高度限制”設置了IBOutlet,並且當該視圖中沒有數據時,我想將該視圖的高度設置為0。 問題是由於該視圖內UILabel的底部限制為10 px,因此視圖未達到0高度。

我得到的就是這樣,

在此處輸入圖片說明

處理約束的代碼

    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];

如果您的目標是iOS 9+,我建議您使用UIStackView ,因為它只需將視圖的.hidden屬性設置為true您的需要。

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

如果無法使用UIStackView ,則需要將垂直填充約束之一設置為比高度約束低的優先級。 您還需要將.clipsToBounds設置為true

以編程方式設置約束並根據需要編寫邏輯,這是個好主意,不要忘記設置layoutifnedded。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM