iOS 5 - 1 自定义 UINavigationBar 不同于所有其他

Posted

技术标签:

【中文标题】iOS 5 - 1 自定义 UINavigationBar 不同于所有其他【英文标题】:iOS 5 - 1 Custom UINavigationBar different than all others 【发布时间】:2012-05-24 04:28:52 【问题描述】:

我在 ios 5 中使用 UIAppearance 创建自定义 UINavigationBar。我使用以下代码(在 AppDelegate.m 中)为所有导航栏提供相同的背景

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavBarNoText.png"] forBarMetrics:UIBarMetricsDefault];

我希望能够只为 1 个 TableViewController 使用 1 个导航栏“NavBarWithText.png”,而我使用 NavBarNoText.png 作为除上述 TableViewController 之外的所有其他导航栏的背景。有谁知道这是否可能?我知道 Instagram 做了类似的事情,主页选项卡使用的导航栏与所有其他选项卡不同。

我尝试在每个单独类的 ViewDidLoad 方法中单独使用它,但它似乎不起作用。起初我让单个视图具有不同的背景,但在我切换视图后它会变回公共背景。

-(void)viewDidLoad

[super viewDidLoad];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBarWithText.png"] forBarMetrics:UIBarMetricsDefault];

单视图

-(void)viewDidLoad

[super viewDidLoad];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBarNoText.png"] forBarMetrics:UIBarMetricsDefault];

对于所有其他视图。

【问题讨论】:

【参考方案1】:

您可以使用此appearanceWhenContainedIn:UITableViewController 中显示时显示不同的导航栏,更多信息请参阅here

【讨论】:

好的,我尝试了appearanceWhenContained,但我仍然只看到“NavBarNoText.png” 是我将appearanceWhenContained放在AppDelegate.m中customAppearance方法的代码中,还是应该放在TableViewController.m中? 你必须为你的 TableViewController 的类提供类名

以上是关于iOS 5 - 1 自定义 UINavigationBar 不同于所有其他的主要内容,如果未能解决你的问题,请参考以下文章

使用 IB / Xcode 4.5.1 和 iOS Simulator 6.0 自定义 UIView 操作方法

IOS 5 TabBar 自定义

iOS 5 自定义标签栏取消分配表视图?

UINavigationBar 自定义背景与悬垂(iOS 5)

Safari iOS 5 中不显示自定义 webfont 字符

Open in... 自定义文件类型适用于 iOS 5、6 和 7,但不适用于 iOS 4