如何为 UISplitviewController 导航栏图像使用单个图像?
Posted
技术标签:
【中文标题】如何为 UISplitviewController 导航栏图像使用单个图像?【英文标题】:How to use single image for UISplitviewController navigation bar image? 【发布时间】:2013-11-05 22:51:40 【问题描述】:在我的应用程序中,我希望有一个图像来覆盖主视图控制器和详细视图控制器的导航栏。 我尝试通过设置 UISplitviewController navigationItem.title 视图在 AppDelgate 中执行此操作,但没有成功。
有什么建议吗??
这是 AppDelegate didFinishLaunching 方法中的代码
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
BAMasterViewController *controller = (BAMasterViewController *)masterNavigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
【问题讨论】:
不清楚你想要什么。您是否希望单个导航栏覆盖整个屏幕宽度?哪些控制器会将新控制器推送到导航堆栈?掌握?细节?两个都?您是否只想要一个背景图像(跨两个控制器),但仍然需要 2 个导航栏,以便在任一控制器执行推送或弹出时获得正确的动画? 【参考方案1】:UINavigationBar
有如下方法:
- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics
使用它。
【讨论】:
我知道。但问题是我只能为 UIsplitViewController 的视图控制器之一设置它。 您在打开弹窗时看到问题了吗? 我的应用只有横向模式。 然后 setBackgroundImage:forBarMetrics 应该可以工作,我在我的项目中也是这样做的。 你的意思是一张图片覆盖两个导航栏?这是不可能的。您有两个导航栏。如果您希望保留一张图片,并且由于您仅支持横向,您可以将UIImage
与两个条的大小成比例。【参考方案2】:
您是否尝试使用外观方法设置导航栏的样式:
[[UINavigationBar appearance] setBackgroundImage:forBarMetrics:];
【讨论】:
以上是关于如何为 UISplitviewController 导航栏图像使用单个图像?的主要内容,如果未能解决你的问题,请参考以下文章
iOS-如何在 UISplitViewController 详细视图上方添加按钮
如何使用 UISplitViewController 作为模态视图控制器?
UISplitViewController - 双列样式不起作用