UIScrollViews子视图不会在纵向到横向方向更改上调整自身大小
在我的应用程序中,我有一个层次结构,如主视图 – > UIScrollView – > UISearchBar。 搜索栏覆盖整个屏幕宽度。 但是当它切换到横向时,滚动视图会根据横向调整自身并覆盖整个屏幕,但其子视图如UISearchBar宽度保持与纵向相同。 另外我正在使用Autolayout并且我已经在故事板中正确设置了他们的约束(前导和尾随,宽度(大于等于320)等)。
另外我知道在SO中有几个答案,但几乎每个人都在willAutororate中再次说明设置宽度。 但我在UIScrollview中有大约15个子视图,我认为不可能以编程方式设置(增加LOC)加上我认为Autolayout必须有一些解决方案。
试试这个:这个问题只能通过约束来解决。 我创建了一个项目,并使用正确的约束, 它对我来说很好 ,
在这里,我将向您展示如何逐个添加正确的约束:
- 添加scrollview并为scrollview添加约束,如屏幕截图所示:
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:
滚动视图在约束条件下不能很好地发挥作用。 这是一种使用约束和界面生成器的方法,这对我来说有一个垂直滚动的滚动视图,不需要任何手动或内容大小的finagling并使用旋转:
- 在具有约束的视图控制器中的Scrollview
- 一个容器(UIView),它是scrollview的子视图 ,定位时将每个边缘固定到superview
- 将所有其他子视图添加到容器视图中。 使用约束。 超出scrollview的高度以获得垂直滚动的scrollview。
然而,有一个技巧可以让旋转resize自动工作:
- 您必须向容器视图添加其他约束 ,以使其宽度与UIScrollview的宽度相匹配。 奇怪的是你必须这样做,因为将每一侧固定到scrollview应该可以做到这一点,但是如果你不添加额外的约束,它将不能用于旋转。
这就是我的意思:
您可以使用子视图的UIViewAutoresizing掩码(autoresizingMask属性)。