iPhone plus 和 iPad UIBarMetrics(不同的 landscape/portrait 导航栏图片)
iPhone plus and iPad UIBarMetrics (different landscape/portrait images for navigation bar)
如何在 iPhone (6-6s-7) plus 或 iPad 上为横向和纵向方向的导航栏背景设置 2 个不同的(例如红色和绿色)图像?
[[UINavigationBar appearance] setBackgroundImage:redImage
forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:greenImage
forBarMetrics:UIBarMetricsCompact];
不适用于 iPad 或 iPhone * 另外,两个方向始终使用 redImage。但适用于所有其他 iPhone(我猜甚至是 iPod)。
此外,阅读有关 iPhone 和 iPad / iPhone 之间条形指标(以及其他任何内容)差异的内容会很棒,另外,导致它(导航栏背景图像) ) 不仅仅是我已经意识到的在 (iPhone plus, iPad) 上具有特定行为的一件事(table 视图中的不同分隔符插图等)。
谢谢你。
您可以将您的视图控制器class(或其他可以控制状态栏的class)订阅到UIApplicationDidChangeStatusBarOrientationNotification。在处理程序中,您应该更新背景图片:
<...>
if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ||
[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
image = redImage;
}
else
{
image = greenImage;
}
<...>
您不能为此使用 UIBarMetrics,因为您的任务使用界面方向作为标准,但 UIBarMetrics 基于 size classes。因此,您不能使用外观来实现所需的行为。
我建议您创建 UINavigationBar 的自定义子 class 并在其中实现该逻辑。
如何在 iPhone (6-6s-7) plus 或 iPad 上为横向和纵向方向的导航栏背景设置 2 个不同的(例如红色和绿色)图像?
[[UINavigationBar appearance] setBackgroundImage:redImage
forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:greenImage
forBarMetrics:UIBarMetricsCompact];
不适用于 iPad 或 iPhone * 另外,两个方向始终使用 redImage。但适用于所有其他 iPhone(我猜甚至是 iPod)。
此外,阅读有关 iPhone 和 iPad / iPhone 之间条形指标(以及其他任何内容)差异的内容会很棒,另外,导致它(导航栏背景图像) ) 不仅仅是我已经意识到的在 (iPhone plus, iPad) 上具有特定行为的一件事(table 视图中的不同分隔符插图等)。
谢谢你。
您可以将您的视图控制器class(或其他可以控制状态栏的class)订阅到UIApplicationDidChangeStatusBarOrientationNotification。在处理程序中,您应该更新背景图片:
<...>
if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ||
[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
image = redImage;
}
else
{
image = greenImage;
}
<...>
您不能为此使用 UIBarMetrics,因为您的任务使用界面方向作为标准,但 UIBarMetrics 基于 size classes。因此,您不能使用外观来实现所需的行为。
我建议您创建 UINavigationBar 的自定义子 class 并在其中实现该逻辑。