swift Xcode在scrollView中对内容的CGRect框架大小有问题

时间:2016-07-04 03:01:19

标签: xcode swift cgrectmake

我想要在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)

非常感谢!

1 个答案:

答案 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;