首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置适合subViews的UIView大小

设置适合subViews的UIView大小
EN

Stack Overflow用户
提问于 2016-09-16 16:29:08
回答 2查看 30.7K关注 0票数 20

我有一个包含两个UILabels的UIView,它们有动态的高度。我希望UIView适合的大小的UILabels +一些填充。现在,我正在绘制标签,然后将UIView的宽度和高度约束设置为标签的组合大小。

现在我正在做这件事:

代码语言:javascript
复制
func populateWithMessage(headline: String?, message: String) {
    // Sets text
    self.headerLabel.text = headline
    self.messageLabel.text = message

    self.headerLabel.sizeToFit()
    self.messageLabel.sizeToFit()

    self.layoutSubviews()

    // Finding the label with the greatest width
    var longestLabel: UILabel!
    if self.headerLabel.frame.width > self.messageLabel.frame.width {
       longestLabel = self.headerLabel
   } else {
       longestLabel = self.messageLabel
   }
   
   let combinedLabelHeight = self.headerLabel.frame.height + self.messageLabel.frame.height
   
   // Update the container view's constraints
   self.containerViewWidtConstraint.constant = longestLabel.frame.width + 10
   self.containerViewHeightConstraint.constant = combinedLabelHeight + 10

   self.updateConstraints()
}

不幸的是,它不能工作。我使用的是Swift 2.3和Autolayout。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-16 16:46:11

您可以使用故事板本身来完成此操作。

将视图的底部约束设置为second UIlabel。所以当标签的高度增加时,UIView的高度也会增加。

票数 37
EN

Stack Overflow用户

发布于 2016-09-16 17:39:40

@Girish M答案正确。我只是想澄清一下。将顶部标签的约束设置为视图的顶部、两个标签之间的垂直间距以及底部标签和UIView之间的底部约束。不要设置任何高度约束。

或者,如果您想要更多地控制UILabels的高度,您可以在故事板中为标签添加高度约束,并在代码中为它们创建插座。在更改标签的文本时执行此代码。

代码语言:javascript
复制
    label1.sizeToFit()
    label2.sizeToFit()

    label1HeightConstraint.constant = label1.frame.size.height
    label2HeightConstraint.constant = label2.frame.size.height

    view.layoutSubviews()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39526929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档