我在Xcode 7中工作,使用Autolayout并定位iOS 9.3。我有一个包含容器视图的主视图控制器。容器视图包含子视图控制器。
容器视图的前导和尾随约束为-20,因此它完全覆盖水平主视图控制器。
然而,当主视图控制器第一次加载时,容器内显示的子视图控制器内容在左侧和右侧略微被切断(几乎就像它不能识别约束一样) -20左右)。
当我将设备旋转到横向然后再回到原始纵向方向时,子视图控制器会突然正确缩放,并且不再在左侧和右侧切断。
所以看起来在向侧面旋转设备并再次向后旋转时会调用一些布局方法,而在首次加载视图时不会调用它。这可能是什么方法?有没有办法我可以手动调用此方法,以便在第一次加载子项时强制更新布局/大小,使其看起来与旋转和向后旋转后相同?
答案 0 :(得分:0)
首先,您不需要设置-20的边距。容器视图每一侧的0边距足以使子视图扩展到主容器视图之外。我已经尝试过你的想法,但没有问题。您可以从下面的github链接下载该项目;
答案 1 :(得分:0)
我找到了问题的解决方案:
我没有在容器视图上设置-20的前导和尾随约束,而是在容器视图上设置一个与主视图宽度相同的约束,并将其水平居中放在容器中。
有了这些约束,它可以在第一次加载时工作,虽然我无法解释为什么这会对原始约束产生不同的影响。我想我的教训是,使用Autolayout,如果在某些情况下调整容器大小的一种方法表现得很笨拙,请尝试另一组约束来实现相同的结果。