Ios Can';不要改变uibarbuttonite的背景
我需要在一个ViewController中更改UIBarButtonItem的默认(已在我的AppDelegate中声明)背景 因此,在我的AppDelegate中,我有:Ios Can';不要改变uibarbuttonite的背景,ios,objective-c,uibarbuttonitem,uiappearance,Ios,Objective C,Uibarbuttonitem,Uiappearance,我需要在一个ViewController中更改UIBarButtonItem的默认(已在我的AppDelegate中声明)背景 因此,在我的AppDelegate中,我有: UIImage *navBarItemBackground = [UIImage imageNamed:@"navbar_button_green"]; [[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground
UIImage *navBarItemBackground = [UIImage imageNamed:@"navbar_button_green"];
[[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground
forState:UIControlStateNormal
style:UIBarButtonItemStyleBordered
barMetrics:UIBarMetricsDefault];
当我需要恢复按钮的默认背景时,我在viewController中实现:
self.navigationItem.rightBarButtonItem = nil;
UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithTitle:@"Сохранить" style:UIBarButtonItemStyleBordered target:self action:@selector(clickOnSend:)];
[rightBarItem setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal style:UIBarButtonItemStyleBordered barMetrics:UIBarMetricsDefault];
self.navigationItem.rightBarButtonItem = rightBarItem;
但我认为将空文件设置为图像是不正确的。有没有更简单的方法来实现这种行为?谢谢 您应该将代码更改为:
UIBarButtonItem * rightBarItem = [[UIBarButtonItem alloc]
initWithTitle: @"Сохранить"
style: UIBarButtonItemStyleBordered
target: nil action: nil];
UIImage *navBarItemBackground = [[UIImage imageNamed:@"navbar_button_green"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[self.navigationItem setBackBarButtonItem: rightBarItem];
如果您只想更改一个或多个
UIViewController的
UIBarButtonItems
backgroundImage,最好更改特定的UIViewController
s,就像您使用的后一种情况一样。而[[uibarbuttonite外观]setBackgroundImage:forState:style:barMetrics:]
将更改所有UIBarButtonItems
背景图像,这可能不是更好的图像。我需要在一个viewController中只保留一个默认按钮-其他按钮应随外观更改。应用此代码更改所有按钮,并使用不带[UIBarButtonItem外观]的特定代码到需要默认值的viewController。是的,代码的第二部分放置在单独的viewController中。但是我需要为这个按钮保留默认的iOS6背景,对于其他所有按钮,我需要用外观更改背景。@ShurupuS然后你只需将nil传递给image参数,它应该可以工作。是的-它可以工作,只是尝试使用这个解决方案-不,代码看起来简单一点。谢谢