我想要在scrollView中垂直布局一些元素,其中一个元素位于另一个元素之下。我有一个UILabel,一个UITextView,一个UIImageView,另一个UITextView,然后是另一个UITextView(在scrollView中我希望有一个标题,一个介绍段落,一个图像,一个正文段落和一个结论段落。我不能硬编码这些元素的大小,因为不同的页面有不同的字典和图像。如何正确地找到CGRect为每个视图元素的框架制作浮动大小?我特别遇到Y值的问题。
这是我的代码:
让startingY =(self.navigationController?.navigationBar.frame.height)! + UIApplication.sharedApplication()。statusBarFrame.size.height
//Position subViews on screen.
self.categoryTitle.frame = CGRectMake(0, startingY, self.view.bounds.width, 50)
let secondY = startingY + 50
self.categoryIntro.frame = CGRectMake(0, secondY, self.view.bounds.width, secondY + self.categoryIntro.contentSize.height)
let thirdY = secondY + self.categoryIntro.contentSize.height
self.imageView.frame = CGRectMake(0, thirdY, self.view.bounds.width, thirdY + image.size.height)
let fourthY = thirdY + image.size.height
self.categoryParagraph.frame = CGRectMake(0, fourthY, self.view.bounds.width, fourthY + self.categoryParagraph.contentSize.height)
let fifthY = fourthY + self.categoryParagraph.contentSize.height
self.categoryConclusion.frame = CGRectMake(0, fifthY, self.view.bounds.width, fifthY + self.categoryConclusion.contentSize.height)
非常感谢!
答案 0 :(得分:0)
如果要增加存储y的变量,则应使用var。 let关键字适用于您希望保持不变的变量。
您也不需要将y位置添加到CGRectMake的最后一个参数。高度将添加到第二个参数中设置的y位置。
然后,您可以使用y位置变量的最终值来更新您的滚动视图的内容。
此外,如果您已将滚动视图定位在状态栏下方,则从零开始。
然后,您可以添加添加的每个视图的高度:
var yPos = 0;
self.categoryTitle.frame = CGRectMake(0, yPos, self.view.bounds.width, 50)
yPos += self.categoryTitle.frame.size.height;
self.categoryIntro.frame = CGRectMake(0, yPos, self.view.bounds.width, self.categoryIntro.contentSize.height)
yPos += self.categoryIntro.frame.size.height;
self.imageView.frame = CGRectMake(0, yPos, self.view.bounds.width, image.size.height);
yPos += self.imageView.frame.size.height;