【问题标题】:How to use auto layout in a UINavigationBar custom titleView如何在 UINavigationBar 自定义 titleView 中使用自动布局
【发布时间】:2017-09-20 14:24:44
【问题描述】:

WWDC 2017 presentation 204 中,他们说您可以在自定义titleView 中使用自动布局。

发生在 7:53 左右

他们从不举例说明如何做到这一点。

当我尝试时,我得到一个零尺寸的视图。

在界面生成器中,我创建了一个 UIView 并添加了一个 UISearchBar 和一个 UIButton 作为类似这样的子项

[seachBar]-[按钮]

它变成零宽度。

有人知道如何使用这个新功能吗?

【问题讨论】:

    标签: interface-builder swift4 xcode9


    【解决方案1】:

    我会回答我自己的问题。

    本质上,自动布局的工作方式与您预期的一样。然而,问题是每个元素要么需要有约束来指定其宽度,要么需要指定其固有大小。例如,如果您将搜索栏替换为 uilabel,则自定义标题视图将正确地适合标签。搜索栏显然没有固有大小,因此需要控制它的增长。

    我在搜索栏后面放置了一个 uilabel,并将其限制在搜索栏的顶部、底部、前缘和后缘。我给了文本的 uilabel ALOT 并将其设置为当文本过多时它会被截断。

    当我运行该应用程序时,搜索栏的宽度不为零,并且横向切换会根据需要缩小和拉伸搜索栏。按钮仍会折叠到 0 宽度,但通过将压缩阻力设置为高于 uilabel 即可轻松修复。

    我知道,为此目的添加一个虚拟 UILabel 是一种黑客行为。我愿意接受任何替代方案...

    这是example project.

    【讨论】:

    • 建议的答案仅适用于 iOS 11。之前的每个操作系统都不会扩展自定义 titleView,因此需要一些自定义布局。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多