iphone - 为 UINavigationBar 上的后退按钮设置自定义图像

标签 iphone objective-c xcode uinavigationcontroller uibutton

我正在尝试为后退按钮设置自定义图像,当将新 View 插入堆栈时,该按钮会自动放置到导航栏上。

我尝试在父 viewController 的 viewDidLoad 中添加以下内容:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"BackButton.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

我也试过以下方法:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"BackButton.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
    self.navigationItem.backBarButtonItem = btn;

使用 UIAppearance 会产生非常奇怪的结果: The BackButton image seems to be placed underneath the original title

最佳答案

试试这段代码

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];  
UIImage *backBtnImage = [UIImage imageNamed:@"BackBtn.png"]  ;  
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal];  
[backBtn addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside];  
backBtn.frame = CGRectMake(0, 0, 54, 30);  
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ;  
self.navigationItem.leftBarButtonItem = backButton;

然后像这样定义回退方法

- (void)goback
{
    [self.navigationController popViewControllerAnimated:YES];
}

关于iphone - 为 UINavigationBar 上的后退按钮设置自定义图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019914/

相关文章:

iphone - 循环 UIScrollView 但继续减速

objective-c - 避免 objmsg 函数开销?

Xcode - 检查扩展类型

ios - iOS 8 和 7 上的 View 框架不同

iphone - 内存管理困惑 Objective C

objective-c - 为什么使用自定义时无法定义 IBOutlet "prototype tableviewcells"

ios - 带搜索栏的 TableView Controller 和创建数据库

ios - 跨多个 MTKViews 共享一个 MTLCommandBuffer

ios - 通知服务扩展不工作

iphone - ARC 和可变参数导致 BAD_ACCESS