自定义 UINavigationBar 显示后,默认 UINavigationBar titleView 框架不正确
Default UINavigationBar titleView frame incorrect after custom UINavigationBar display
我在 UIViewController 上创建了一个名为 UIViewController+CustomNavigationBar
的类别,只需三行代码即可轻松处理 custom-designed UINavigationBar 子类的显示和删除!
但是,我遇到的问题之一是,当我弹出显示我的自定义导航栏的视图控制器时,前一个视图控制器的常用 UINavigationBar 的 titleView 的垂直居中显示不正确。
由于这有点难以描述,这里有一个 link 这个问题的 GIF 动画:https://github.com/kenmhaggerty/UIViewController-CustomNavigationBar/blob/demo/Sample%20Project/Issue%20Demo.gif
我在代码中做了很多工作,所以我也 posted it to GitHub。不过,一些关键点是:
- 我在我的类别中
-[viewWillAppear:]
和 -[viewWillDisappear:]
的混合实现中使用 [self.navigationController setValue:navigationBar forKeyPath:NSStringFromSelector(@selector(navigationBar))]
设置我的自定义 UINavigationBar。
- 我正在使用自动布局调整自定义 UINavigationBar 的大小。
- 当使用我的自定义导航栏的视图控制器出现时,我存储现有的导航栏并re-set当我的带有自定义导航栏的视图控制器弹出时将其返回到导航控制器。
- 因为这个问题影响了我原来的视图控制器,那个视图控制器的
navigationItem.titleView
是零,所以我不能(貌似)手动调整标题视图的框架。
知道为什么会出现这种奇怪的布局问题吗?另外,还有其他不一致的地方,有空的话请fork + check一下
我通过使用 UINavigationBar 的新实例重新设置导航栏解决了这个问题!
我在 UIViewController 上创建了一个名为 UIViewController+CustomNavigationBar
的类别,只需三行代码即可轻松处理 custom-designed UINavigationBar 子类的显示和删除!
但是,我遇到的问题之一是,当我弹出显示我的自定义导航栏的视图控制器时,前一个视图控制器的常用 UINavigationBar 的 titleView 的垂直居中显示不正确。
由于这有点难以描述,这里有一个 link 这个问题的 GIF 动画:https://github.com/kenmhaggerty/UIViewController-CustomNavigationBar/blob/demo/Sample%20Project/Issue%20Demo.gif
我在代码中做了很多工作,所以我也 posted it to GitHub。不过,一些关键点是:
- 我在我的类别中
-[viewWillAppear:]
和-[viewWillDisappear:]
的混合实现中使用[self.navigationController setValue:navigationBar forKeyPath:NSStringFromSelector(@selector(navigationBar))]
设置我的自定义 UINavigationBar。 - 我正在使用自动布局调整自定义 UINavigationBar 的大小。
- 当使用我的自定义导航栏的视图控制器出现时,我存储现有的导航栏并re-set当我的带有自定义导航栏的视图控制器弹出时将其返回到导航控制器。
- 因为这个问题影响了我原来的视图控制器,那个视图控制器的
navigationItem.titleView
是零,所以我不能(貌似)手动调整标题视图的框架。
知道为什么会出现这种奇怪的布局问题吗?另外,还有其他不一致的地方,有空的话请fork + check一下
我通过使用 UINavigationBar 的新实例重新设置导航栏解决了这个问题!