仅对 navigationItem backBarButton Item 使用自定义图像
Posted
技术标签:
【中文标题】仅对 navigationItem backBarButton Item 使用自定义图像【英文标题】:Use only custom image for navigationItem backBarButton Item 【发布时间】:2017-03-13 16:52:07 【问题描述】:我想删除标题并仅使用自定义图像作为导航控制器中的后退按钮。 我遇到了this 之类的问题,我已经尝试过:
navigationItem.backBarButtonItem = UIBarButtonItem(image: UIImage(named: Constants.Image.kClose), style: .plain, target: nil, action: nil)
我把它放在视图控制器的viewDidLoad()
中,它正在推送UITabbarController
。 (我知道在导航控制器中推送标签栏不是一个好主意,但我需要这样做)。
我得到以下结果:
但我不想要那个默认的蓝色后退按钮。我只希望我的自定义关闭按钮出现在那里。我怎样才能做到这一点?
【问题讨论】:
为什么不将图像设置到左侧栏按钮项?它不工作吗?设置蓝色后退按钮图像...或清除蓝色后退按钮。 设置左键项不起作用。我不明白instate blue back button image
查看这篇文章可能对***.com/questions/40504860/…有帮助
【参考方案1】:
创建一个条形按钮
- (UIBarButtonItem *)backButton
UIButton *leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 4, 34, 34)];
leftButton.layer.cornerRadius = leftButton.frame.size.width / 2;
leftButton.layer.masksToBounds = YES;
[leftButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
[leftButton addTarget:self action:@selector(backButtonTapped) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
return leftBarButton;
这样设置
self.navigationItem.leftBarButtonItem = [self backButton];
【讨论】:
【参考方案2】:self.navigationController?.navigationBar.backIndicatorImage = backImage
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = backImage
self.navigationController?.navigationBar.backItem?.title = ""
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: UIControl.State.highlighted)
【讨论】:
什么是setBackIndicatorImage
?
/* 后退指示器图像显示在后退按钮旁边。后退指示符转换掩码图像在推送和弹出转换期间用作内容掩码 注意:如果要自定义后退指示符图像,则必须同时设置这些属性。 */
但是选择器 setBackIndicatorImage
是什么?它在哪里定义?如果我使用它,编译器会抛出错误。以上是关于仅对 navigationItem backBarButton Item 使用自定义图像的主要内容,如果未能解决你的问题,请参考以下文章
从 navigationItem 中删除项目以编程方式显示 navigationItems 标题
当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?