swift Xcode scrollView 内容的 CGRect 帧大小调整有问题

swift Xcode having issues with CGRect frame sizing for contents in scrollView

我有几个元素想在 scrollView 中垂直布局,一个元素在另一个元素下方。我有一个 UILabel、一个 UITextView、一个 UIImageView、另一个 UITextView,然后是另一个 UITextView(在滚动视图中,我希望有一个 header、一个介绍段落、一个图像、一个 body 段落,以及结论段落。我不能对这些元素的大小进行硬编码,因为不同页面有不同的词典和图像。我怎样才能适当地找到 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)

非常感谢!

如果你想增加存储 y 的变量,你应该使用 var。 let 关键字用于您希望保持不变的变量。

您也不需要在CGRectMake 的最后一个参数中添加y 位置。高度将添加到第二个参数中设置的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;