iOS 11 prefersLargeTitles 以 uibutton 作为标题

Posted

技术标签:

【中文标题】iOS 11 prefersLargeTitles 以 uibutton 作为标题【英文标题】:iOS 11 prefersLargeTitles with uibutton as title 【发布时间】:2017-10-21 16:17:05 【问题描述】:

如标题所示,我使用 UIButton 作为导航栏中的 titleView。有没有办法让 UIButton 和导航栏一起变大?当我设置self.navigationController?.navigationBar.prefersLargeTitles = true时,得到的是这个,

【问题讨论】:

【参考方案1】:

我找不到这方面的任何文档,所以我玩了一下。似乎在 ios 11 中,您将无法将该标题设置为按钮并在左侧大显示。

此外,我还调整了按钮的帧大小(添加在下面)。无论我将框架设置为什么,我都无法增加按钮大小。


为了重新创建,我设置了一个单一视图项目。我将视图控制器嵌入到导航控制器中。

ViewController.swiftviewDidLoad中,我添加了这段代码:

    let titleButton = UIButton(type: .roundedRect)
    titleButton.setTitle("Hello Button!", for: UIControlState.normal)

    let navController = parent as! UINavigationController

    navController.navigationBar.topItem!.title = "Hello???"
    navController.navigationBar.topItem!.titleView = titleButton
    navController.navigationBar.prefersLargeTitles = true

这最终看起来像你的例子。

如果我

设置.title为空字符串,或者注释掉行:导航栏被拉伸,并且没有标题文本显示(或在Interface Builder中设置的标题文本显示)

注释掉.prefersLargeTitles,或设置为false:导航栏为正常高度,按钮显示,但不显示标题文本。

注释掉titleView 行,并且:

.prefersLargeTitles 设置为truetitle 文本在左侧显示较大,并且导航栏的高度被拉伸。 将.prefersLargeTitles设置为falsetitle文本显示在顶部中心,导航栏为正常高度。

【讨论】:

以上是关于iOS 11 prefersLargeTitles 以 uibutton 作为标题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 的 Refresh Controller 和 navigationBar 问题将 prefersLargeTitles 设置为 true

BarTintColor 不适用于 Xamarin 中 iOS 13 中的 PrefersLargeTitles

UINavigationBar.prefersLargeTitles 打开时的错误 UIRefreshControl 行为

在 iOS 11 上调整 UI 导航

iOS 11 在导航栏中自定义搜索栏

使用 prefersLargeTitles 和 UITableView 平滑滚动