如何为 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 - 双列样式不起作用

django:DetailView 如何为两个模型工作或基于类的视图如何为两个模型工作?

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加