移除导航栏返回按钮文本并将标题居中

3

我已经在AppDelegate中删除了UIBarButton的文本:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -1000.f) forBarMetrics:UIBarMetricsDefault];

这个方法非常实用:

UINavigationBar

如你所见,这并没有把导航标题水平居中。那么有什么最好的解决方案可以在全局范围内为所有视图实现居中呢?

PS:我正在使用Storyboard。

1个回答

2
您可以按照以下方式使用UILabel创建自定义的titleView:
UIView *titleView = [[UIView alloc]initWithFrame:CGRectMake(0,0,100,50)];
UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,100,50)];

titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.text = @"PAKKELISTE";
[titleView addSubview:titleLabel];

self.navigationItem.titleView = titleView;

这些框架、文字和对齐方式的细节仅是示例。主要思想是将自定义的UIView设置为navigationItem的titleView。

你的返回按钮的偏移可能也有问题。尝试使用以下方法来移除“返回”文本(我以前没有尝试过,但我很好奇它是否有效)。

self.navigationController.navigationBar.topItem.title = @"";

你的代码也有相同的问题。看起来好像是被推动的是 titleView 而非实际的 UILabel。 - rebellion
1
我刚刚编辑了我的响应。尝试使用self.navigationController.navigationBar.topItem.title = @""代替你的偏移代码。确保将其放置在需要它的视图控制器之前的viewController的viewDidLoad中(即INFORMASJON viewController的viewDidLoad)。 - ebandersen
太好了,它像魔法一样奏效 :) 但是有没有可能将titleView代码放在一个可以重复使用的地方? - rebellion
1
我不确定。你尝试过只使用self.navigationController.navigationBar.topItem.title = @""而不使用titleView代码吗?使用默认的titleView应该可以正确居中。我很高兴这有所帮助。一如既往,接受我的答案并点赞将不胜感激 :) - ebandersen
不错的解决方法。猜测有一种适用于所有视图控制器的好方法,但现在只能这样做 :) - rebellion
尝试将其添加到 navigationController 的 rootViewController 中。然后对于您推入堆栈的所有视图,它都应该可以工作。 - ebandersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接