UIScrollViews子视图不会在纵向到横向方向更改上调整自身大小

Him*_*han 1 landscape uiscrollview ios autolayout

在我的应用程序中,我有一个层次结构,如主视图 - > UIScrollView - > UISearchBar.搜索栏覆盖整个屏幕宽度.但是当它切换到横向时,滚动视图会根据横向调整自身并覆盖整个屏幕,但其子视图如UISearchBar宽度保持与纵向相同.另外,我正在使用Autolayout,我已经在故事板中正确设置了约束(前导和尾随,宽度(大于等于320)等).

另外我知道在SO中有几个答案,但几乎每个人都会在willAutororate中再次说明设定宽度.但我在UIScrollview中有大约15个子视图,我认为不可能以编程方式设置(增加LOC)加上我认为Autolayout必须有一些解决方案.

n8t*_*8tr 12

滚动视图约束条件下不能很好地发挥作用.这是一种使用约束和界面生成器的方法,这对我来说有一个垂直滚动的滚动视图,不需要任何手动或内容大小的finagling并使用旋转:

  • 在具有约束的视图控制器中的Scrollview
  • 一个容器(UIView),它是滚动视图的子视图,其中的约束将每个边缘固定到超视图
  • 将所有其他子视图添加到容器视图中.使用约束.超出scrollview的高度以获得垂直滚动的scrollview.

然而,有一个技巧可以让旋转调整大小自动工作:

  • 您必须向容器视图添加其他约束,以使其宽度与UIScrollview的宽度相匹配.奇怪的是你必须这样做,因为将每一侧固定到scrollview应该可以做到这一点,但是如果你不添加额外的约束,它将不能用于旋转.

这就是我的意思:

UIScrollView在Interface Builder中有约束