下面的代码完全可以正常运行iOS 5,但不适用于iOS 6或更高版本。 我想要的是对于电子邮件作曲家表,navigationBar图像将与其他UINavigationBar类不同。我无法理解调试指针正在响应外观方法,但在设备上它将navigationBar图像显示为“bgNavigationBar.png”;预计是“bgNavigationBar_2.png”。
请指导我.......
if ([[UINavigationBar class]respondsToSelector:@selector(appearance)]) {
UIImage *logoImage44 = [[UIImage imageNamed:@"bgNavigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:logoImage44 forBarMetrics:UIBarMetricsDefault];
UIImage *ImagePlain = [[UIImage imageNamed:@"bgNavigationBar_2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:ImagePlain forBarMetrics:UIBarMetricsDefault];
}
答案 0 :(得分:7)
这件事在ios6中不起作用。
[[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBackgroundImage:[UIImage imageNamed:@"bgNavigationBar_2.png"] forBarMetrics:UIBarMetricsDefault];
您需要在Mail Handler类中设置此属性。
if (![[UINavigationBar class]respondsToSelector:@selector(appearance)])
{
UIView *backgroundView = [[[UIView alloc] initWithFrame:CGRectMake(0,0,320,44)]autorelease];
[backgroundView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bgNavigationBar_2.png"]]];
controller.topViewController.navigationItem.titleView = backgroundView ;
}
else
{
UIImage *gradientImagePlain = [[UIImage imageNamed:@"bgNavigationBar_2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImagePlain forBarMetrics:UIBarMetricsDefault];
}
然后为所有其他导航控制器的背景图像重置另一个图像。
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self.parentController dismissModalViewControllerAnimated:YES];
UIImage *gradientImagePlain = [[UIImage imageNamed:@"bgNavigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImagePlain forBarMetrics:UIBarMetricsDefault];
}
希望这对你有用。