[英]Automatically Grow a View's Height Based on It's Content
我有一個(垂直) UIStackView
包含一個高度為50
的普通UIView
(稱為sliderView
),又包含一個在故事板中定義的高度為36
的UILabel
。 標簽的alpha
屬性最初設置為0.0
,以使其不可見。
在控制器的viewDidLoad
我使用UIViewController Containment將另一個視圖控制器的視圖添加為sliderView
的子視圖。 此新子視圖不一定與sliderViews
高度匹配。 實際上可能更高。
首先,此設置看起來不錯。 使標簽可見后,我看到它仍然從50
的y位置開始。 因此, sliderView
不會自動拉伸以使用其新孩子的身高。 說得通。
我以為我可以輕松地在sizeToFit
上調用sliderView
來使這兩個高度合適。 不幸的是,這似乎不起作用。 我在這里誤會什么嗎? 謝謝!
使用以下方法獲取NSString
文本所需的CGSize
。
- (CGSize)getHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font {
CGSize size = CGSizeZero;
if (text) {
CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil];
size = CGSizeMake(frame.size.width, frame.size.height+20.0f);
}
return size;
}
在這里, width
參數是label
的寬度,而font
是為label
指定的字體。 調用CGSize.height
獲取高度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.