Ios 如何在swift中自定义导航后退按钮?
我想更改导航栏上的后退按钮图标、标签和后退按钮标签的颜色。我已经写了以下代码,但没有工作。如果有人知道soloution,请帮帮我Ios 如何在swift中自定义导航后退按钮?,ios,swift,uinavigationbar,Ios,Swift,Uinavigationbar,我想更改导航栏上的后退按钮图标、标签和后退按钮标签的颜色。我已经写了以下代码,但没有工作。如果有人知道soloution,请帮帮我 override func viewDidLoad() { super.viewDidLoad() let yourBackImage = UIImage(named: "back_arrow") self.navigationController?.navigationBar.b
override func viewDidLoad() {
super.viewDidLoad()
let yourBackImage = UIImage(named: "back_arrow")
self.navigationController?.navigationBar.backIndicatorImage = yourBackImage
self.navigationController?.navigationBar.tintColor = .white
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = yourBackImage
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Find or Invite", style: UIBarButtonItem.Style.plain, target: nil, action: nil)
}
预期产量
看起来您在没有嵌入式导航控制器的情况下手动添加了导航栏 为此,只需像这样连接插座
@IBOutlet weak var navigationBar: UINavigationBar!
并从代码中删除导航控制器部分,如下所示
let yourBackImage = UIImage(named: "back_arrow")
self.navigationBar.backIndicatorImage = yourBackImage
self.navigationBar.tintColor = .white
self.navigationBar.backIndicatorTransitionMaskImage = yourBackImage
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Find or Invite", style: UIBarButtonItem.Style.plain, target: nil, action: nil)
试试这个:
在viewDidLoad中声明按钮、图像和标题
let button = UIButton(type: .custom)
//Set the image
button.setImage(UIImage(systemName: "chevron.backward"), for: .normal)
//Set the title
button.setTitle("Yourtitle", for: .normal)
//Add target
button.addTarget(self, action: #selector(callMethod), for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
button.sizeToFit()
现在设置图像和标题之间的间距:
let spacing:CGFloat = 10.0; // the amount of spacing to appear between image and title
button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: spacing)
button.titleEdgeInsets = UIEdgeInsets(top: 0, left: spacing, bottom: 0, right: 0)
之后,创建导航栏按钮并添加到导航栏:
let barButton = UIBarButtonItem(customView: button)
navigationItem.leftBarButtonItem = barButton
结果是:
奖金:
如果您想在一行中正确设置导航栏,请查看此处的扩展名我在导航栏按钮项中添加了后退按钮和标题。我已经为使用这两种方法制作了动态函数 此代码为后退按钮,它将返回UIBarButtonItem项
func getBackButton(selector: Selector, target: Any) -> UIBarButtonItem {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "img_back_white"), for: .normal)
button.setImage(UIImage(named: "img_back_white"), for: .highlighted)
button.setImage(UIImage(named: "img_back_white"), for: .selected)
button.imageView?.contentMode = .scaleAspectFit
button.imageEdgeInsets = UIEdgeInsets(top: 0, left: -15, bottom: 0, right: 0)
button.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
//button.imageEdgeInsets = UIEdgeInsets(top: 0.0, left: 0, bottom: 0, right: 0)
button.backgroundColor = .clear
button.addTarget(target, action: selector, for: .touchUpInside)
return UIBarButtonItem(customView: button)
}
现在添加标题旁边的后退按钮
func getNavigationTitleButton(title: String, font: UIFont = UIFont.SFProDisplayRegular(size: 19)) -> UIBarButtonItem {
let navTitle = UILabel()
navTitle.text = title
navTitle.textColor = .AppWhite
navTitle.isEnabled = true
navTitle.font = font
//navTitle.backgroundColor = .red
//navTitle.frame.origin.x = -40
//navTitle.sizeToFit()
return UIBarButtonItem(customView: navTitle)
}
您可以根据需要定制。我想再添加一个方法,如果您想在某些屏幕上直接显示这两个方法,那么请使用带有title和selector参数的方法
func addBackWithTitle(title: String, selector: Selector) {
self.navigationItem.leftBarButtonItems = [self.getBackButton(selector: selector, target: self), self.getNavigationTitleButton(title: title)]
}
提示:Backbarbuttonimbut什么都没用提示2:UIBarbuttonimca你能检查一下我的设计吗我想我是在半睡半醒。很抱歉。。。尝试在
viewwillbeen
或viewdidebeen
中执行此操作。实际上,我已将我的控制器嵌入Storyboard中的导航控制器中。标题未显示:(@AbhayjeetSingh在我的项目中正确显示,尝试打开新项目,以编程方式配置导航栏和导航控制器,如下所示:,复制并粘贴viewDidLoad中按钮的代码,然后告诉我……使用上述代码,标题(Yortitle)太大,并显示在下一个屏幕上line@AbhayjeetSingh尝试添加:button.sizeToFit()