如何为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)我已经意识到(表视图中的不同分隔符插入等)。
谢谢,你。
答案 0 :(得分:1)
您可以将视图控制器类(或其他可以控制状态栏的类)订阅到UIApplicationDidChangeStatusBarOrientationNotification。在处理程序中,您应该更新背景图像:
<...>
if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ||
[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
image = redImage;
}
else
{
image = greenImage;
}
<...>
您不能使用UIBarMetrics,因为您的任务使用界面方向作为标准,但UIBarMetrics基于size classes。因此,您无法使用外观来实现所需的行为。
我建议您创建UINavigationBar的自定义子类并在其中实现该逻辑。