在iPad上的UINavigationBar横向居中徽标

Posted

技术标签:

【中文标题】在iPad上的UINavigationBar横向居中徽标【英文标题】:Centering Logo In Landscape In UINavigationBar On iPad 【发布时间】:2012-02-13 17:18:06 【问题描述】:

在我的 iPhone 应用程序中,我有以下代码来设置应用程序中横向和纵向标题栏的背景图像。

if ([UINavigationBar respondsToSelector:@selector(appearance)]) 
    [[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed:@"titlebar_landscape.png"] forBarMetrics:UIBarMetricsLandscapePhone];
    [[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed:@"titlebar.png"] forBarMetrics:UIBarMetricsDefault];  
    [[UINavigationBar appearance] setBackgroundColor: [UIColor redColor]];

图片是以渐变背景为中心的应用程序徽标,相应地调整了横向大小。我为我的 iPad 版本的应用程序做了同样的事情,但是横向图像不起作用,因为 iPad 上的横向没有特定的选项,就像 iPhone UIBarMetricsLandscapePhone 上那样。

所以我的问题是如何在我的 iPad 上实现类似的效果,我的应用程序徽标在 iOS5 的横向模式下以渐变背景为中心?

【问题讨论】:

Apple Bug:这应该是可能的。如果我们仍然必须手动进行这种黑客攻击,那么外观系统就非常愚蠢(我不知道 Apple 怎么没注意到应用程序在不同的 iPad 方向上使用不同的背景 - Apple 自己做的!) 【参考方案1】:

无论方向如何,iPad 都使用相同的条形指标,因此您只需设置 UIBarMetricsDefault 图像。 iPhone 横向度量是因为系统在横向模式下使用 iPhone 上略短的导航栏。所有其他导航栏的尺寸都较大,包括 iPad 上显示的任何导航栏。

【讨论】:

我明白,但你错过了这个问题。问题不在于 iPad 是如何工作的,而是如何在标题栏中的横向视图中获得居中的图像? 我认为您的图像只是相同的东西,但经过调整以适应两个不同的高度。如果您必须在 iPad 上为横向模式使用不同的背景图像,那么您必须在 UIViewController 子类的 willRotateToInterfaceOrientation:duration: 方法中将其换出。由于 iPad 仅使用一个指标,因此您无法在 UINavigationBar 中获得自动交换行为来为您执行此操作。【参考方案2】:

这是一个很好的教程,可能会帮助您指明正确的方向。 http://iosdevelopertips.com/user-interface/ios-5-customize-uinavigationbar-and-uibarbuttonitem-with-appearance-api.html

【讨论】:

这是给 iPhone 的。问题在于@john 指出 iPad 对两个方向使用相同的度量。这使得图像难以居中。

以上是关于在iPad上的UINavigationBar横向居中徽标的主要内容,如果未能解决你的问题,请参考以下文章

即使 iPad 处于纵向模式,如何强制 iPad 上的电视处于横向模式

横向加载时iPad上的UIPageViewController黑屏

UISearchBar 在横向没有响应,但在 iPad 上的纵向正常

没有正文内容的 iPad 横向上的额外正文高度 (iOS7)

UINavigationBar 横向标题字体大小

根据横向/纵向更改 UINavigationBar 背景?