ios - 如何在导航栏的默认后退按钮上设置图像

标签 ios objective-c

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

}

您的导航栏后退按钮看起来像这样。

Custom back image in navigation bar

关于ios - 如何在导航栏的默认后退按钮上设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758130/

相关文章:

ios - 从 UITextField 获取一个值,计算另一个值,然后更新 UILabel

ios - 滚动文本 - 自定义动画

ios - 如何将自定义对象保存在数组中并将其存储在 NSUserDefaults - iPhone

ios - Objective-C 回调/ block 模式

ios - '-[AVPlayer super View ] : unrecognized selector sent to instance 0x21011ad0'

ios - 使用字符串作为名称来设置属性值

ios - UITabBar 图标显示不正确

ios - 使用分段控件切换 Collection View

ios - WebView 和 UISwipeGestureRecognizer

objective-c - UITextField 设置可见?