如何实现有关iOS12.1版本的自动布局约束的兼容性

时间:2019-05-07 13:58:17

标签: ios objective-c uiview autolayout

我的应用程序在名为“搜索栏容器”的UIView内有一个“搜索栏”,它又被放置在导航栏下方。在Interface Builder上,自动布局constraints设置在搜索栏和UIView之间,如下所示:

  1. 第一项:搜索栏顶部 关系:平等 第二项:搜索栏容器 常数:0 优先级:1000 乘数:1

  2. 第一项:搜索栏。 关系:平等 第二项:SearchBar.Leading的容器 常数:0 优先级:1000 乘数:1

  3. 第一个项目:搜索栏。 关系:平等 第二项:SearchBar.Trailing的容器 常数:0 优先级:1000 乘数:1

“搜索栏容器”(UIView)的宽度设置为480,高度设置为44。UIView的自动调整大小设置为在各个方向上相对拉伸和定位。搜索栏的宽度也设置为480。

根据设备的屏幕分辨率,在IOS 10之前UIView和搜索栏会相对伸展。但是,对于IOS 12.1版本,“搜索栏”在运行时不可见。调试并检查大小后,UIView及其子级“搜索栏”的宽度在运行时都设置为0。删除自动布局约束后,只有搜索栏可见,但根据屏幕分辨率却无法拉伸。

需要帮助解决此问题。

编辑: UIView容器位于导航栏中的后退/前进按钮之间。这就是UIView容器设置为“自动调整大小”而不是设置自动布局约束的原因。由于它位于两个按钮项之间,因此我认为不能对其父级进行前后空格限制。

1 个答案:

答案 0 :(得分:0)

  

“搜索栏容器”(UIView)设置为宽度:480,高度:44。“ UIView”的自动调整大小设置为在各个方向上相对拉伸和定位。

但是它的子视图(搜索栏)是使用自动版式固定到它的。您无法像这样混合搭配自动版式和自动调整大小。将自动布局约束应用于容器。


这似乎是您的导航项目标题视图。这就解释了为什么这在iOS 10中而不是在iOS 11中起作用的原因。标题视图现在必须使用具有内部宽度和高度约束的自动布局来为其设置大小。您将无法再动态调整其大小。