繁体   English   中英

根据内容自动增加视图的高度

[英]Automatically Grow a View's Height Based on It's Content

情况

我有一个(垂直) UIStackView包含一个高度为50的普通UIView (称为sliderView ),又包含一个在故事板中定义的高度为36UILabel 标签的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM