居中 UINavigationBar 标题文本问题

Posted

技术标签:

【中文标题】居中 UINavigationBar 标题文本问题【英文标题】:Centering UINavigationBar title text issue 【发布时间】:2013-08-01 20:47:44 【问题描述】:

在我的UINavigationBar 我有一个多行标题,我使用以下代码进行设置:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 480, 50)];
label.backgroundColor = [UIColor clearColor];
label.numberOfLines = 2;
label.font = [UIFont boldSystemFontOfSize: 15.0f];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.text = @"Headloss due to Friction              (Hazen Williams Eq.)";

self.navigationItem.titleView = label;

由于这是一个子视图,它有一个“返回”按钮,由UINavigationController 添加。所以我想通过添加label.textAlignment = NSTextAlignmentCenter; 我的标题会居中,但它实际上是从我的“返回”按钮的末尾到我的屏幕末尾将我的标题居中。

我怎样才能覆盖它,以便我的标题实际上基于我的屏幕尺寸居中,(基本上,如果不存在后退按钮,默认情况下的方式)。

【问题讨论】:

【参考方案1】:

很好的问题,很难。如果我找到更优雅的解决方案,我会编辑我的答案,但这就是我想出的:

UIView *spaceView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 20)];

UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithCustomView:spaceView];
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:space];

只需调整 UIView 的宽度,即可让 titleLabel 移动多远。

【讨论】:

这很完美!达到了我想要的结果,谢谢!

以上是关于居中 UINavigationBar 标题文本问题的主要内容,如果未能解决你的问题,请参考以下文章

向左或向右移动 UINavigationBar 标题的文本

UINavigationBar 强制标题视图在后面居中

在iPad上的UINavigationBar横向居中徽标

UINavigationBar 标题文本部分显示在屏幕上

UINavigationBar 隐藏按钮文本

UINavigationBar TitleView 带字幕