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

Posted

技术标签:

【中文标题】UINavigationBar 强制标题视图在后面居中【英文标题】:UINavigationBar forces title view to center on back 【发布时间】:2012-06-01 09:29:18 【问题描述】:

我已经为我的导航栏实现了一个自定义标题视图,其中包含一个图像和一个标签。通过将其 origin.x 设置为 10 像素,此视图与栏的左侧对齐。

到目前为止一切都很好,但是当我按下视图控制器然后返回主屏幕时,标题视图居中而不是位于左侧。

我尝试将其左右栏按钮项设置为 nil,并将其 origin.x 设置为 10,但似乎没有任何效果。我尝试了 viewWillAppear 和 viewDidAppear:

CGRect frame = self.navigationItem.titleView.frame;
frame.origin.x = 10;
self.navigationItem.titleView.frame = frame;

self.navigationItem.backBarButtonItem = nil;
self.navigationItem.leftBarButtonItem = nil;

我怎样才能做到这一点?

【问题讨论】:

frame.origin.x = 10;尝试将此添加到您的 viewDidAppear 对不起。我读得很快,并没有注意到代码 sn-p.. 之前的最后一行。 你找到答案了吗?我正在努力解决同样的问题。 【参考方案1】:

首先,您应该在 viewDidLoad 中设置 navigationItem(在调用 [super viewDidLoad] 之后)而不是 viewWill/DidAppear。

你是不是只在第二个视图控制器上设置了 navigationItem 而不是主 vc???

如果是这样,您需要在两者上设置 navigationItem,或者在两个视图控制器都应子类化的基础视图控制器类中。

【讨论】:

我正在主视图控制器上设置导航项,在 viewDidLoad 方法中,调用 [super viewDidLoad]... 对于每个使用自定义导航标题的视图控制器,您都需要在 viewDidLoad 中使用它。或者在您的视图控制器子类的基本视图控制器中

以上是关于UINavigationBar 强制标题视图在后面居中的主要内容,如果未能解决你的问题,请参考以下文章

linux下删除文件夹的软链接时注意千万不能在后面加反斜杠,千万不要用强制删除,否则下面2种场景,你会把源文件删除,要闯祸的

UINavigationBar 标题视图对齐问题

UINavigationBar 自定义标题视图

iOS 3DAnimations:旋转多个叠加视图时出现问题

由于奇怪的 UINavigationBar 视图层次结构,自定义 UINavigationBar 不起作用

从 UIPageViewContoller 中包含的视图设置 UINavigationBar 标题