根据内容

时间:2016-02-11 13:26:06

标签: ios iphone swift uiview uistackview

情况

我有一个(垂直)UIStackView包含UIView高度50(名为sliderView)和UILabel高度36在我的故事板中定义。标签的alpha属性最初设置为0.0,以使其不可见。

在控制器的viewDidLoad中,我使用UIViewController Containment将另一个视图控制器的视图添加为sliderView的子视图。此新子视图不一定与sliderViews高度匹配。它实际上可能更高一点。

首先,此设置看起来很好。一旦我看到标签,我就会看到它仍然在50的y位置开始。因此,sliderView并未自动延长使用它的新孩子的身高。有道理。

问题

我认为我可以轻松地在sizeToFit上拨打sliderView以使这两个高度合适。不幸的是,这似乎不起作用。我在这里误解了什么吗?谢谢!

1 个答案:

答案 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以获得身高。