Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS5更改UIToolbar的背景_Ios_Background Image_Uitoolbar - Fatal编程技术网

iOS5更改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

我已经阅读了“iOS5中的新功能”文档,其中指出,现在更好地支持更改某些UI元素的背景

我找不到iOS 5更改UIToolbar背景图像的正确方法。有没有一种新的iOS 5特别的方法可以做到这一点?或者我还需要对UIToolbar进行子类化吗?

这里有一个很棒的教程:

基本上,它看起来是这样的:

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];