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.swift
的viewDidLoad
中,我添加了这段代码:
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
设置为true
:title
文本在左侧显示较大,并且导航栏的高度被拉伸。
将.prefersLargeTitles
设置为false
:title
文本显示在顶部中心,导航栏为正常高度。
【讨论】:
以上是关于iOS 11 prefersLargeTitles 以 uibutton 作为标题的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11 的 Refresh Controller 和 navigationBar 问题将 prefersLargeTitles 设置为 true
BarTintColor 不适用于 Xamarin 中 iOS 13 中的 PrefersLargeTitles
UINavigationBar.prefersLargeTitles 打开时的错误 UIRefreshControl 行为