我在尝试计算scrollView的高度时遇到了一些问题。我做了一个"测试"应用程序强调问题。 我只有一个嵌入在NavigationController中的控制器,它嵌入在TabBarController中。
然后我在屏幕顶部看到一个视图,并在此视图下方包含2个标签的scrollView。我试图通过获取其子视图中最大的maxY来计算scrollView的高度。这是代码:
override func viewDidLoad() {
super.viewDidLoad()
// I have to add this line so that the red view doesn't show under the navigation bar
self.edgesForExtendedLayout = UIRectEdge.None
let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 40))
view.backgroundColor = UIColor.redColor()
let scrollView = UIScrollView(frame: CGRect(x: 0, y: view.frame.maxY, width: self.view.frame.width, height: self.view.frame.height - view.frame.maxY))
scrollView.backgroundColor = UIColor.yellowColor()
let label1 = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
label1.text = "test"
label1.sizeToFit()
scrollView.addSubview(label1)
let label2 = UILabel(frame: CGRect(x: 0, y: 700, width: 0, height: 0))
label2.text = "test"
label2.sizeToFit()
scrollView.addSubview(label2)
// Calculate scrollView height
var maxY:CGFloat = 0
for view in scrollView.subviews {
if view.frame.maxY > maxY {
maxY = view.frame.maxY
}
}
scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: maxY)
self.view.addSubview(view)
self.view.addSubview(scrollView)
}
所以这就是我所拥有的:
我应该看到另一个"测试"滚动时底部标签但事实并非如此,滚动视图不够大
如果我删除红色视图,请使scrollView适合所有主视图并删除此行
self.edgesForExtendedLayout = UIRectEdge.None
然后它起作用:
任何解决方案?