0

我想改变我的设计,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];
}

问题是应用程序第一次加载按钮的背景图像并没有改变,但是如果我离开视图并回来,背景就会改变为我想要的。这里有什么问题?我使用故事板。

4

2 回答 2

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];
于 2013-09-17T12:33:35.147 回答
0

在你初始化一个类之前调用​​你的代码——在类之外。

于 2013-09-17T12:32:19.490 回答