当 navigationItem.title 太长时后退按钮标题消失

Posted

技术标签:

【中文标题】当 navigationItem.title 太长时后退按钮标题消失【英文标题】:BackButton title disappering when navigationItem.title too long 【发布时间】:2014-03-21 10:48:36 【问题描述】:

我在 NavigationItem 中的所有按钮都是在代码中为 viewHierachy 中的特定视图设置的。 使用 titleLabel 设置标题以设置 minimumScaleFactor 和 contentCompression:

titleLabel.text = self.bookTitel;
titleLabel.minimumScaleFactor = 0.5;
[titleLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
                             forAxis:UILayoutConstraintAxisHorizontal];
[titleLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
                             forAxis:UILayoutConstraintAxisVertical];
self.navigationItem.titleView = titleLabel;

现在当 bookTitle 太长时,它会被缩短为 ...,但 backButtons 的标题也会消失。

UIBarButtonItem 没有响应 setContentCompression:,所以我无法将其设置为 requiredPriority。

如何防止后退按钮不显示?

【问题讨论】:

【参考方案1】:

以下是UINavigationItem class reference 概述部分的摘录:

导航项必须提供标题,以便在查看时显示 控制器位于导航堆栈的最顶层。此外,该项目 可能包含额外的按钮显示在右侧 导航栏。您可以指定按钮和视图显示在 工具栏的左侧使用 leftBarButtonItems 属性,但 导航控制器仅在有空间时才显示这些按钮 可用。

如果没有足够的空间,导航控制器将不会在左侧显示任何按钮,即您的后退按钮所在的位置。这取决于导航控制器...

为了防止后退按钮不显示:

你能进一步限制titleLabel 的大小吗? (视图的大小)。

【讨论】:

嗯,实际上 minimumScaleFactor 和 contentCompressions 似乎被忽略了。也设置视图框架。当标题太长时,我通过削减标题来解决问题。

以上是关于当 navigationItem.title 太长时后退按钮标题消失的主要内容,如果未能解决你的问题,请参考以下文章

从另一个类 Swift 访问 navigationItem.title

如何在 Swift 4 中将 navigationItem.title 更改为白色?

如何重新加载 NavigationItem 标题

navigationItem的设置和titleView的设置

设置 navigationItem 标题延迟问题

navigationItem.TitleView 在 iOS 10 上不起作用