【问题标题】:Automatically Grow a View's Height Based on It's Content根据内容自动增加视图的高度
【发布时间】:2016-02-11 13:26:06
【问题描述】:

情况

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

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

起初,这个设置看起来不错。一旦我使标签可见,我看到它仍然从50 的 y 位置开始。因此,sliderView 不会自动拉伸以使用它的新孩子的身高。有道理。

问题

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

【问题讨论】:

    标签: ios iphone swift uiview uistackview


    【解决方案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 的大小。
    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多