我在 Appdelegate 中使用以下代码为所有 View Controller 在导航栏上设置后退按钮图像:
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
现在,在我的一个 View Controller 中,我从图库中选择一个新图像并保存它。我希望一旦我保存这个新图像,后退按钮的“图像”就会被这个“新图像”替换。
我在每个 View Controller 的 viewWillAppear 中尝试了以下代码
[self.navigationItem.backBarButtonItem setBackButtonBackgroundImage:newimage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
尝试过
[self.navigationItem.backBarButtonItem setImage:new];
这也是。但这一切都是徒劳的。 只有当我再次运行我的应用程序时图像才会改变,因此当 Appdelegate 中的代码被调用时。
请帮忙!
最佳答案
要设置自己的后退图像按钮,您需要设置自定义外观。并调用 appdelegate.h 文件。
注意:您需要在appdelegate.h
中设置一次,然后在整个项目中应用。不需要在每个 Controller 中声明。
请检查这个。
//in Appdelegate.h file
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self customappearance]; //Method declaration
}
并在自定义外观中使用图像名称声明您的图像。像这样,
-(void)customappearance
{
//int imageSize = 20;
UIImage *myImage = [UIImage imageNamed:@"icon_back"]; //set your backbutton imagename
UIImage *backButtonImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// now use the new backButtomImage
[[UINavigationBar appearance] setBackIndicatorImage:backButtonImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage];
/*
UIImage *backbutton=[[UIImage imageNamed:@"icon_back"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch];
//resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backbutton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];*/
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0)
forBarMetrics:UIBarMetricsDefault];
}
您的导航栏后退按钮看起来像这样。
关于ios - 如何在导航栏的默认后退按钮上设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758130/