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;
我有几个元素想在 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;