如何在 iOS 11 的导航栏上设置大标题?

Posted

技术标签:

【中文标题】如何在 iOS 11 的导航栏上设置大标题?【英文标题】:How to set large title on navigation bar for iOS 11? 【发布时间】:2017-09-22 13:09:14 【问题描述】:

我正在为 ios 11 或更高版本创建应用程序,需要在导航栏左侧设置大标题。

请高人帮忙弄清楚如何设置,它应该只适用于 iOS 11 或更高版本。

请给我一些其他建议,以在整个应用程序(支持 iOS 8 或更高版本)中保持此功能可用。

提前致谢。

【问题讨论】:

***.com/a/46198535/5461400 【参考方案1】:

这里是代码 sn-p,用于在 iOS 11 或更高版本的导航栏左侧显示大标题。

目标 C:

  self.title = @"Your title";
    if (@available(iOS 11, *)) 
        self.navigationController.navigationBar.prefersLargeTitles = true;
         self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
    

斯威夫特:

       self.title = "Your title"
        if #available(iOS 11, *) 
            self.navigationController?.navigationBar.prefersLargeTitles = true
            self.navigationController?.navigationItem.largeTitleDisplayMode = .always
         

您需要在构建应用程序之前为 iOS 11 设置检查条件。

测试大标题的要求:

Xcode 9.0, Mac OSX - 10.12.6 或更高版本, 装有 iOS 11 的 iPhone/iPad 或 Xcode 9 模拟器。

【讨论】:

我的标题很大,我怎样才能让它适合屏幕?【参考方案2】:
if (@available(iOS 11.0, *)) 
    [[UINavigationBar appearance] setPrefersLargeTitles:false];

【讨论】:

不应该设置为true吗?【参考方案3】:

您可以将 UILabel 设置为 titleView

UILabel *lblTitle = [[UILabel alloc] init];
lblTitle.text = YOUR_TITLE_TEXT;
lblTitle.backgroundColor = [UIColor clearColor];
lblTitle.textColor = [UIColor whiteColor];
lblTitle.font = FONT_NAV_BAR;
[lblTitle sizeToFit];
self.navigationItem.titleView = lblTitle;

【讨论】:

以上是关于如何在 iOS 11 的导航栏上设置大标题?的主要内容,如果未能解决你的问题,请参考以下文章

推送视图控制器时,导航栏上出现 iOS 11 黑条

iOS 11 中的搜索栏问题有大标题

iOS11导航栏问题

如何在导航栏上为单个视图上的不同按钮设置标题?

如何在导航栏上设置常用栏按钮项

iOS 11 大标题导航栏的图像