根据内容自动增加视图的高度
Posted
技术标签:
【中文标题】根据内容自动增加视图的高度【英文标题】:Automatically Grow a View's Height Based on It's Content 【发布时间】:2016-02-11 13:26:06 【问题描述】:情况
我有一个(垂直)UIStackView
,其中包含在我的故事板中定义的高度为 50
(名为 sliderView
)的普通 UIView
和高度为 36
的 UILabel
。标签的 alpha
属性最初设置为 0.0
以使其不可见。
在控制器的viewDidLoad
中,我使用UIViewController Containment 将另一个视图控制器的视图添加到sliderView
的子视图中。这个新的子视图不一定匹配sliderViews
高度。它实际上可能更高一些。
起初,这个设置看起来不错。一旦我使标签可见,我看到它仍然从50
的 y 位置开始。因此,sliderView
不会自动拉伸以使用它的新孩子的身高。有道理。
问题
我认为我可以轻松地在sliderView
上调用sizeToFit
以使这两个高度适合。不幸的是,这似乎不起作用。我在这里误解了什么吗?谢谢!
【问题讨论】:
【参考方案1】:使用以下方法获取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
获取身高。
【讨论】:
嗯,谢谢你的回复,但这不是我要找的。标签非常好。我需要调整sliderView
的大小。以上是关于根据内容自动增加视图的高度的主要内容,如果未能解决你的问题,请参考以下文章
Interface Builder 中的自动布局根据外部视图的宽度/高度更改布局
根据 contentSize 增加 tableview 的高度