iOS5改变了UIToolbar的背景

我已经阅读了“iOS 5中的新function”文档,并指出,现在可以更好地支持更改某些UI元素的背景。

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

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

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

 @interface AppDelegate : UIResponder  @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

这是一个很棒的教程: 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];