【问题标题】:UIAppearance Remove Custom NavBar Background for UIPopoverControllerUIAppearance 删除 UIPopoverController 的自定义导航栏背景
【发布时间】:2012-07-04 18:39:04
【问题描述】:

我正在整合 iOS 5 的 UIAppearance 功能,为我的通用应用程序提供一个独特的主题。目前,我已经在我的 App Delegate 中实现了一些代码来为应用提供自定义导航栏:

UIImage *navBarImage = [[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];

这很好用,并将所有导航栏从 Apple 的普通样式更改为明亮的渐变。但是,我遇到的问题是它覆盖了一些我也不想要的样式。我的特殊问题是它覆盖了 iPad 的 UIPopoverController 中的导航栏背景,造成了丑陋的用户体验。请告诉我如何解决它。

编辑:请注意,这是一个通用应用程序,我通过 iPad 上的 UIPopoverController 和 iPhone/iPod 上的模式视图打开图像选择器。我只想在 iPad 弹出框上删除导航栏的自定义背景,而不是在模态视图上。

目前的样子:

我希望它看起来如何:

提前感谢您的帮助, 古维

【问题讨论】:

    标签: objective-c xcode ios5 uipopovercontroller uiappearance


    【解决方案1】:

    尝试使用 +appearanceWhenContainedIn: 方法从导航栏中删除背景图像自定义,当它们包含在弹出框控制器中时。像这样的:

    [[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    

    从文档中不清楚将导航栏的背景图像设置为nil 是否会恢复其默认外观 - 如果这不起作用,您可能必须采取相反的方法,并提供非弹出容器的列表查看您正在使用的控制器到+appearanceWhenContainedIn:

    【讨论】:

    • 将其设置为 nil 完成了这项工作。非常感谢你的帮助!我不敢相信我自己没有弄明白。
    • 同样的技巧也适用于按钮,例如:[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsDefault ];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多