iOS5改变了UIToolbar的背景

时间:2011-11-29 14:42:44

标签: ios background-image uitoolbar

我已经阅读了“iOS 5中的新功能”文档并且在那里说明了,现在可以更好地支持更改某些UI元素的背景。

我找不到iOS 5更改UIToolbar背景图片的正确方法。是否有一种特殊的新iOS 5方式?或者我是否仍然必须继承UIToolbar?

2 个答案:

答案 0 :(得分:13)

是的,有一种新方法可以做到这一点。您可以使用appearance使所有UIToolBar具有相同的外观。

首先,您必须确保您的班级遵循UIAppearanceContainer协议。在这里,我在我的app委托中完成了它:

@interface AppDelegate : UIResponder <UIApplicationDelegate, UIAppearanceContainer>

@property (strong, nonatomic) UIWindow *window;

@end

然后,您可以设置外观,例如application:didFinishLaunchingWithOptions:viewDidLoad。像这样:

UIImage *image = [UIImage imageNamed:@"myimage.png"];
[[UIToolbar appearance] setBackgroundImage:image forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

您只需执行此操作即可为应用中的所有UIToolBar获得相同的外观。您还可以设置UIToolBar的许多(如果不是全部?)属性。

作为旁注,有许多类可以遵循UIAppearanceContainer协议。要找出可以使用外观协议自定义的内容,可以打开要自定义的类的头文件,如果可以使用UIAppearance设置属性,则该属性后面会显示UI_APPEARANCE_SELECTOR财产声明。

答案 1 :(得分:2)

这是一个很棒的教程:http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

基本上,它看起来像这样:

UIImage *gradientImage32 = [[UIImage imageNamed:@"surf_gradient_textured_32"] 
    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

[[UINavigationBar appearance] setBackgroundImage:gradientImage32 
    forBarMetrics:UIBarMetricsDefault];