iOS5更改UIToolbar的背景
我已经阅读了“iOS5中的新功能”文档,其中指出,现在更好地支持更改某些UI元素的背景 我找不到iOS 5更改UIToolbar背景图像的正确方法。有没有一种新的iOS 5特别的方法可以做到这一点?或者我还需要对UIToolbar进行子类化吗?这里有一个很棒的教程: 基本上,它看起来是这样的:iOS5更改UIToolbar的背景,ios,background-image,uitoolbar,Ios,Background Image,Uitoolbar,我已经阅读了“iOS5中的新功能”文档,其中指出,现在更好地支持更改某些UI元素的背景 我找不到iOS 5更改UIToolbar背景图像的正确方法。有没有一种新的iOS 5特别的方法可以做到这一点?或者我还需要对UIToolbar进行子类化吗?这里有一个很棒的教程: 基本上,它看起来是这样的: UIImage *gradientImage32 = [[UIImage imageNamed:@"surf_gradient_textured_32"] resizableImageWithC
UIImage *gradientImage32 = [[UIImage imageNamed:@"surf_gradient_textured_32"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImage32
forBarMetrics:UIBarMetricsDefault];
是的,有一种新的方法可以做到这一点。您可以使用
appearance
使所有UIToolBar
s具有相同的外观
首先,您必须确保您的类遵循UIAppearanceContainer
协议。在这里,我已在我的应用程序代理中完成此操作:
@interface AppDelegate : UIResponder <UIApplicationDelegate, UIAppearanceContainer>
@property (strong, nonatomic) UIWindow *window;
@end
您只需执行一次即可为应用程序中的所有UIToolBar
s获得相同的外观。您还可以设置UIToolBar
的许多属性(如果不是全部的话)
作为旁注,有许多类可以遵循
UIAppearanceContainer
协议。要了解可以使用外观协议自定义的内容,可以打开要自定义的类的头文件(如果可以使用UIAppearance
)设置属性,然后属性在属性声明后面写入了UI\u外观\u选择器。在模拟器中启动应用程序后,我在控制台中得到一个错误:-[\u uiearance setBackgroundImage:forBarMetrics:]:未识别的选择器发送到实例0x903b8d0 2011-11-29 16:05:04.469 CatalogService[2998:fb03]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\u UIAppearance setBackgroundImage:forBarMetrics::]:未识别的选择器发送到实例0x903b8d0'
我使用的代码是:[[UIToolbar外观]setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault]代码>确定。你确定你使用的图像已经加载了吗?但是,首先,尝试只设置tintColor,看看您使用的方法是否真的被调用,以及UIToolBar
是否响应您的方法调用。例如:[UIToolBar外观].tintColor=[UIColor redColor]
如果我尝试设置tintColor,它会显示在类型为“id”的对象上找不到属性“tintColor”
。。。看来有问题了。UINaviagtionBar就是在这种情况下工作的。我可以根据需要设置所有属性。好的。发现问题了!UIToolbar包含在ViewController中。如果UIToolbar包含在ViewController中,我无法更改AppDelegate中的UIToolbar。谢谢你的帮助,马瑟!还有一个问题!我可以设置颜色和Alpha值。但当我试图设置背景图像时,我在控制台中收到了上面提到的错误。我尝试分配的图像是一个有效的ressource,因为我还将其设置为UINavigationBar,没有任何问题或错误!
UIImage *image = [UIImage imageNamed:@"myimage.png"];
[[UIToolbar appearance] setBackgroundImage:image forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];