在界面构建器中,我创建了一个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)
答案 0 :(得分:0)
将此代码用于身高:
[text boundingRectWithSize:CGSizeMake(self.view.frame.width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil].size.height
答案 1 :(得分:0)
设置contentSize
并不适用于autolayout。您可以做的最佳解决方案是创建限制内容高度的约束。您根本不必使用任何代码。
你需要:
scrollView
顶部到image
image
身高的垂直约束。image
到titleText
titleText
到fullText
的垂直约束。fullText
到scrollView
底部的垂直约束。然后将自动计算内容高度。
设置宽度有点复杂,因为您始终希望scrollView
的宽度等于屏幕宽度。最简单的解决方案是采用一个视图,为其宽度添加约束,将约束作为插座连接,并将其.constant
设置为屏幕大小(UIScreen.mainScreen().bounds
)。
通常,最好在IB中进行大部分视图设置,而不是在代码中进行。例如,您也可以在IB中设置标签字体。