我想更改UIBarButtonItem
的设计,并且它对此代码有所帮助:
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *image = [[UIImage imageNamed:@"header.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
问题是,应用程序第一次加载按钮的背景图像时不会改变,但如果我离开视图并返回,则背景会改变为我想要的。这里的问题是什么?我使用故事板。
答案 0 :(得分:3)
要使用UIAppearance
,您应该在加载视图或创建控件之前设置控件的外观。如果您以编程方式创建控件,则可以执行(示例代码)
[[UIStepper appearance]setTintColor:[UIColor redColor]];
UIStepper *stepper = [[UIStepper alloc]init];
[self.view addSubview: stepper];
或尝试在application didFinishLaunchingWithOptions
中设置外观。
来自UIAppearance.h
要自定义容器类实例或层次结构中实例所包含的类的实例的外观,请使用+ appearanceWhenContainedIn:作为相应的外观代理。例如:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:myNavBarColor];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setTintColor:myToolbarColor];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], [UIPopoverController class], nil] setTintColor:myPopoverToolbarColor];
答案 1 :(得分:0)
在开始上课之前调用代码 - 在课堂之外。