将uiscrollview子视图调整为全屏

Posted

技术标签:

【中文标题】将uiscrollview子视图调整为全屏【英文标题】:Adjust the uiscrollview subview to full screen 【发布时间】:2015-03-18 20:48:07 【问题描述】:

我有一个 UIScrollview 和一个包含不同对象的视图。 像这样的:

View
 UiScrollView
  View -ContentView-
   -Button
   -Label
   -...
   -...

在这个 contentView 中,我将 top、bottom、left 和 right margin 设置为 0(当然来自作为 superView 的 scrollView);我还设置了水平和垂直对齐中心;

然后我在那个 contentView 中添加我的所有视图,以及 scrollView 的 contentSize。

获取scrollview lame last view的总高度并获取他的MaxY来设置scrollview的高度。

这很好用,问题是 ContentView 视图没有更新它的大小,显示出来了,但是它的对象不起作用,他的背景对屏幕视图来说是可见的。

我附上了一张我的情况图片,以便更容易查看。

知道如何解决这个问题吗?

谢谢!!

【问题讨论】:

按钮之间以及按钮和contentView之间是否有约束?你不应该在代码中设置scrollView的高度,它应该由约束来确定 设置scrollView.contentSize的时候,是否也可以设置contentView的大小一样? 【参考方案1】:

这似乎是对 UIScrollView 中自动布局的常见误解。我希望你先看看这份文件。

https://developer.apple.com/library/ios/technotes/tn2154/_index.html

简单来说,改变 UIScrollView 的 contentSize 并不会改变你的 contentView 的大小。相反,如果你想在那里使用自动布局,它是 contentView 的约束决定 UIScrollView 的 contentSize。

你有两个选择。第一个选项是将 contentView 的 translatesAutoresizingMaskIntoConstraints 设置为 NO,并在更改 UIScrollView 的 contentSize 时将 contentView 的框架更改为与 contentSize 相同的大小。另一个选项是向 contentView 添加宽度和高度约束。这将确定 UIScrollView 的 contentSize。

【讨论】:

以上是关于将uiscrollview子视图调整为全屏的主要内容,如果未能解决你的问题,请参考以下文章

切换方向时如何使 UIView 自动调整为全屏

UIScrollView 的行为是不是因全屏而异?

旋转 90 时如何将 TextureView 大小调整为全屏?

即使设置了 CGRect,UIScrollView 中的 UIPageViewController 仍会显示为全屏 - 用户滚动后立即返回正确的帧值

ios中给uiscrollview添加的全屏子视图为啥宽度只显示屏幕的一半

调整容器 uiscrollview 中所有 uiscrollview 的大小