【问题标题】:Autoresizing not working in iOS11 / XCode 9自动调整大小在 iOS11 / XCode 9 中不起作用
【发布时间】:2018-02-27 03:28:03
【问题描述】:

在使用 XCode 9 为 iOS11 构建时,视图的 Autoresizing 似乎不再可靠地工作。

几个视图的布局最终以控件的位置作为它们在 XIB 中的位置,但没有发生适当的调整大小。这在 iOS10 中运行良好,并且适用于我们在 iOS11 中运行的旧应用程序。但是,重建应用程序的定位和调整大小失败。

是否发生了影响autoresizingmask使用的变化?

有没有办法自动从AutoResizing 转换为AutoLayout and Constraints?

编辑: 有问题的控件是UINavigationBar 和UIToolBar。

【问题讨论】:

  • 原来我们正在挖掘 UINavigationBar 和 UIToolBar 以找到内部控件,然后手动更改它的大小(我们不应该这样做)。这打破了,因为苹果改变了这些的内部结构。不过,调整大小似乎仍然存在问题,如果可能的话,我想将其全部转换为约束。

标签: autolayout ios-autolayout ios11 autoresizingmask xcode9


【解决方案1】:

我今天正在处理同样的问题:在某些情况下有效的一件事是换掉类似(但不相同)的掩码值。例如,我们的一个视图不适用于 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);

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多