我有一个(垂直)UIStackView
包含UIView
高度50
(名为sliderView
)和UILabel
高度36
在我的故事板中定义。标签的alpha
属性最初设置为0.0
,以使其不可见。
在控制器的viewDidLoad
中,我使用UIViewController Containment将另一个视图控制器的视图添加为sliderView
的子视图。此新子视图不一定与sliderViews
高度匹配。它实际上可能更高一点。
首先,此设置看起来很好。一旦我看到标签,我就会看到它仍然在50
的y位置开始。因此,sliderView
并未自动延长使用它的新孩子的身高。有道理。
我认为我可以轻松地在sizeToFit
上拨打sliderView
以使这两个高度合适。不幸的是,这似乎不起作用。我在这里误解了什么吗?谢谢!
答案 0 :(得分:-2)
使用以下方法获取CGSize
文字所需的NSString
。
- (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
以获得身高。