如何在UINavigationBar自定义titleView中使用自动布局

时间:2017-09-20 14:24:45

标签: interface-builder swift4 xcode9

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

它发生在7:53附近

wwdc-pic

他们从未展示过如何做到这一点的例子。

当我尝试时,我得到一个零大小的视图。

在界面构建器中,我创建一个UIView并添加一个UISearchBar和一个UIButton作为这样的补贴

[seachBar] - [按钮]

变为零宽度。

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

1 个答案:

答案 0 :(得分:2)

我会回答我自己的问题。

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

我在搜索栏后面放了一个uilabel,并将其限制在搜索栏的顶部,底部,前导和后缘。我给了uilabel很多文本并设置它,以便在文本太多时它会被截断。

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

我知道,为此目的添加虚拟UILabel是一种黑客行为。我对任何替代方案持开放态度......

这是example project.