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

时间:2014-01-09 10:16:05

标签: ios uiscrollview autolayout landscape

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

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

3 个答案:

答案 0 :(得分:11)

滚动视图约束的效果不佳。这是一种使用约束和界面生成器的方法,这对我来说有一个垂直滚动滚动视图,不需要任何手动或内容大小,并且可以使用旋转:

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

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

  • 您必须在容器视图中添加附加约束,以使其 width 与UIScrollview的 width 相匹配。奇怪的是你必须这样做,因为将每一侧固定到scrollview应该可以解决问题,但是如果不添加额外的约束,它将不能用于旋转。

这就是我的意思:

UIScrollView with constraints in Interface Builder

答案 1 :(得分:2)

试试这个: 此问题将仅通过约束来解决。我创建了一个项目并使用正确的约束它对我来说工作正常

在这里,我将向您展示如何逐个添加正确的约束:

  
      
  1. 添加scrollview并为scrollview添加约束,如屏幕截图所示:
  2.   

enter image description here

2. now add search bar and add constraints for search bar too, 
here below you can find out complete constraints for scrollview and search together:

enter image description here

答案 2 :(得分:0)

您可以使用子视图的UIViewAutoresizing掩码(autoresizingMask属性)。