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