ios - iOS12.1版本如何实现自动布局约束的兼容性
问题描述
我的应用程序在名为“搜索栏的容器”内有一个“搜索UIView
栏”,它再次放置在导航栏下。在搜索栏之间设置Interface Builder
自动布局,如下图:constraints
UIView
第一项:搜索栏。顶部关系:相等第二项:搜索栏的容器。顶部常量:0 优先级:1000 乘数:1
第一项:搜索栏。前导关系:相等第二项:搜索栏的容器。前导常量:0 优先级:1000 乘数:1
第一项:搜索栏。尾随关系:相等第二项:搜索栏的容器。尾随常量:0 优先级:1000 乘数:1
“搜索栏的容器”(UIView)设置为宽度:480 和高度:44。自动调整UIView
大小设置为在所有方向上相对拉伸和定位。搜索栏也设置了宽度:480。
直到 IOS 10UIView
和 Search Bar 根据设备的屏幕分辨率相对拉伸。但是对于 IOS 12.1 版本,“搜索栏”在运行时变得不可见。当我调试并检查大小时,两者UIView
及其子“搜索栏”的宽度在运行时都设置为 0。删除自动布局约束后,只有搜索栏可见,但不会根据屏幕分辨率进行拉伸。
需要帮助来解决这个问题。
编辑: UIView 容器放置在导航栏内的后退/前进按钮之间。这就是 UIView 容器设置为“自动调整大小”而不是设置自动布局约束的原因。由于它位于两个按钮项之间,我认为它不能设置为其父项的前导和尾随空间限制。
解决方案
“搜索栏的容器”(UIView)设置为宽度:480 和高度:44。“UIView”的自动调整大小设置为在所有方向上相对拉伸和定位。
但是它的子视图,搜索栏,使用自动布局固定在它上面。你不能像这样混合和匹配自动布局和自动调整大小。将自动布局约束应用于容器。
这似乎是您的导航项标题视图。这就解释了为什么这在 iOS 10 中有效,而在 iOS 11 中无效。标题视图现在必须使用具有内部宽度和高度约束的自动布局来赋予其大小。您将无法再动态调整其大小。
推荐阅读
- angular - RxJS 映射运算符是否仅用于 (x=>x) 错误的运算符?
- python - 如何在 PySpark 中拆分数据框列
- watson-conversation - 沃森对话错误?即使找到插槽的实体也会触发“未找到”逻辑
- angular - Ionic 2:我可以将页面作为参数传递给 navCtrl.push 吗?
- c# - 使用 FSharp 获取有关 MongoDB 集合的一般信息
- php - Symfony 4.1:您请求了一个不存在的服务“学说”
- scala - 当pairRDD中的键相同时如何维持值?
- java - 如何使用 vert.x 配置读取 json 文件?
- php - 如何使用 PHP 加密和解密超过 65535 个字符的字符串
- time - 在 Coldfusion .cfc 文件中创建内部时钟以执行计划任务