iOS11 / XCode 9中的自适应尺寸不起作用

7
似乎在使用XCode 9构建iOS11时,视图的“Autoresizing”不再可靠。多个视图的布局以XIB中控件的位置结束,但适当的调整大小并未发生。这在iOS10中一直很好用,并且在运行iOS11的旧应用程序中也可以工作。然而,重新构建应用程序后,定位和调整大小失败了。是否有什么改变影响了“autoresizingmask”的使用?是否有自动从“AutoResizing”转换为“AutoLayout and Constraints”的方法?编辑:造成麻烦的控件是“UINavigationBar”和“UIToolBar”。

结果我们发现我们之前在 UINavigationBar 和 UIToolBar 中寻找内部控件,并手动更改它们的大小(这是不应该做的)。但是这种方法已经失效了,因为Apple已经更改了这些项目的内部结构。虽然仍然似乎存在一些调整大小的问题,但如果可能的话,我想将所有内容转换为约束。 - Jim Leask
2个回答

2

我今天也在处理这个问题:在某些情况下,交换类似但不完全相同的掩码值可以解决问题。例如,我们的一个视图不适用于UIViewAutoresizingFlexibleHeight,但它适用于UIViewAutoresizingFlexibleBottomMargin。

我不知道是否有自动升级到AutoLayout的方法 - 实际上我在其他项目中经常使用AutoLayout,其概念基础非常不同...

如果我找到更好的解决方案,我会编辑这个答案。


2

我也遇到了同样的问题。如@John Nimis所提到的,有时候尝试调整掩码可以解决问题。例如,当我们同时使用顶部和底部掩码(UIViewAutoresizingFlexibleTopMargin| UIViewAutoresizingFlexibleBottomMargin)时,删除顶部掩码可以成功。

编辑 我不知道这是否是一种最终的解决方案,但我注意到在出现问题的地方我在框架上有一个固定的原点(x或y)。例如:

view.frame=(view1.frame.origin.x, 150, width, height);

将固定值更改为相对值(例如相对于另一个视图1),可以通过以下方式解决掩码问题:

view.frame=(view1.frame.origin.x, view1.frame.origin.y+view1.frame.size.height+20, width, height);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接