将contentSize设置为等于UILabel的底部

时间:2015-05-11 07:59:02

标签: ios swift

在界面构建器中,我创建了一个UIViewController,其中包含带有图像的UIScrollView和两个这样的标签。我想将UIScrollViews ContentSize设置为等于fullText的底部,但此刻它似乎不起作用,因为我无法滚动,即使fullText是覆盖超过屏幕尺寸。

这是我的viewWillAppear代码。

    newsImage?.image = newsObject?.imageLink
    newsImage?.clipsToBounds = true
    titleText?.text = formatString(newsObject!.title as! String)
    titleText?.font = UIFont(name: "PT Sans", size: 25)
    titleText?.preferredMaxLayoutWidth = self.view.frame.width
    titleText?.numberOfLines = 0


    fullText?.text = formatString(newsObject!.summary as! String)
    fullText?.font = UIFont(name: "PT Sans", size: 16)
    fullText?.preferredMaxLayoutWidth = self.view.frame.width
    fullText?.numberOfLines = 0
    scrollView?.contentSize = CGSizeMake(self.view.frame.width,     self.fullText!.frame.origin.y + self.fullText!.frame.height)

enter image description here

2 个答案:

答案 0 :(得分:0)

将此代码用于身高:

[text boundingRectWithSize:CGSizeMake(self.view.frame.width, CGFLOAT_MAX)
                                      options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil].size.height

答案 1 :(得分:0)

设置contentSize并不适用于autolayout。您可以做的最佳解决方案是创建限制内容高度的约束。您根本不必使用任何代码。

你需要:

  1. scrollView顶部到image
  2. 的垂直约束
  3. image身高的垂直约束。
  4. imagetitleText
  5. 的垂直约束
  6. titleTextfullText的垂直约束。
  7. fullTextscrollView底部的垂直约束。
  8. 然后将自动计算内容高度。

    设置宽度有点复杂,因为您始终希望scrollView的宽度等于屏幕宽度。最简单的解决方案是采用一个视图,为其宽度添加约束,将约束作为插座连接,并将其.constant设置为屏幕大小(UIScreen.mainScreen().bounds)。

    通常,最好在IB中进行大部分视图设置,而不是在代码中进行。例如,您也可以在IB中设置标签字体。