iPhone plus和iPad UIBarMetrics(导航栏的不同横向/纵向图像)

时间:2016-12-23 10:58:01

标签: ios objective-c ipad cocoa-touch iphone-6-plus

如何为iPhone(6-6s-7)plus或iPad上的横向和纵向导航栏背景设置2个不同的(红色和绿色)图像?

[[UINavigationBar appearance] setBackgroundImage:redImage
                                   forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:greenImage
                                   forBarMetrics:UIBarMetricsCompact];

不适用于iPad或iPhone * plus,只需将redImage用于两种方向。但适用于所有其他iPhone(甚至iPod我猜)。

此外,阅读有关iPhone和iPad / iPhone plus之间的条形码(以及其他任何内容)差异的信息非常棒,因为它(导航栏背景图片)不仅仅是具有特定行为的一件事(iPhone plus ,iPad)我已经意识到(表视图中的不同分隔符插入等)。

谢谢,你。

1 个答案:

答案 0 :(得分:1)

您可以将视图控制器类(或其他可以控制状态栏的类)订阅到UIApplicationDidChangeStatusBarOrientationNotification。在处理程序中,您应该更新背景图像:

<...>
if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ||
            [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        image = redImage;
    }
    else
    {
        image = greenImage;
    }
<...>

您不能使用UIBarMetrics,因为您的任务使用界面方向作为标准,但UIBarMetrics基于size classes。因此,您无法使用外观来实现所需的行为。

我建议您创建UINavigationBar的自定义子类并在其中实现该逻辑。