使用iOS 11中增加的导航栏标题
iOS 11 Beta 1使用几乎所有系统应用程序的增加的导航栏标题(它开始在iOS 10和音乐应用程序中执行此操作)。 我想知道如果苹果公司有一个公共的API,这将在iOS 11,或者它现在将保持私人。
行为是,标题有一个增加的字体大小,左alignment,并将移动到导航栏一旦用户向下滚动。 我在这里的Messages应用程序中附加了一些显示这种行为的屏幕。
尽pipe到目前为止我在UINavigationController
和UINavigationBar
找不到任何引用,也许有人知道一些更多的细节!
只对iOS 11的UINavigationBar
API做的唯一更改是prefersLargetitles
。 在这里检查
你可以在我们自己的应用程序中进行一个小小的改动:在你的IB导航栏中select“喜欢大标题”,或者如果你喜欢在代码中使用它
navigationController?.navigationBar.prefersLargeTitles = true
编辑
如果您需要更改大标题的文本属性,则需要使用UINavigationBar
上的新的largeTitleTextAttributes
属性:
UINavigationBar.appearance().largeTitleTextAttributes = [ NSForegroundColorAttributeName: UIColor.white ]
UINavigationBar
有一个prefersLargeTitles: Bool
属性。 文档在这里 。
class UINavigationBar { var prefersLargeTitles: Bool }
UINavigationItem
有一个largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode
属性。 文档在这里 。
class UINavigationItem { var largeTitleDisplayMode: LargeTitleDisplayMode }
这两个都可以在Interface Builder中修改。
要打开此行为,请将navigationController.navigationBar.prefersLargeTitles
设置为true
。 然后,您可以通过设置navigationItem.largeTitleDisplayMode
来控制导航控制器堆栈中的每个视图控制器。
苹果公司的一般devise准则是不应该在任何地方使用大型的标题(例如,时钟应用程序不使用它们),并且通常优选的是只有导航控制器的第一级使用大标题。 但是,这些只是一般的指导原则。
cocoa触摸video的新function (7:37)中引入了大型题目。
if #available(iOS 11.0, *) { self.navigationController?.navigationBar.prefersLargeTitles = true self.navigationItem.largeTitleDisplayMode = .always } else { // Fallback on earlier versions }
请注意,testing版1中存在一些错误,导致大标题仅在您手动向上滚动时出现。
if #available(iOS 11.0, *) { navigationController?.navigationBar.prefersLargeTitles = true navigationController?.navigationBar.topItem?.title = "Hello" navigationController?.navigationItem.largeTitleDisplayMode = .automatic let attributes = [ NSAttributedStringKey.foregroundColor : UIColor.red, ] navigationController?.navigationBar.largeTitleTextAttributes = attributes } else { // Fallback on earlier versions }