[英]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.