在swift中更改UINavigationBar中UIBarButtonItem的宽度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在swift中更改UINavigationBar中UIBarButtonItem的宽度相关的知识,希望对你有一定的参考价值。
我需要在swift 2.0中为我的导航栏按钮设置框架
我试过这段代码
self.navigationController!.navigationBar.drawRect(CGRectMake(0, 0, 30, 30))
但它不会起作用
提前致谢
答案
// Swift 3
let backButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
backButton.setBackgroundImage(UIImage(named: "img"), for: .normal)
backButton.addTarget(self, action: "action:", for: .touchUpInside)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
// Swift 2
let backButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
backButton.setBackgroundImage(UIImage(named: "img"), forState: .Normal)
backButton.addTarget(self, action: "action:", forControlEvents: .TouchUpInside)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
另一答案
// We dont have Property to change UIBarButtonItem frame
// So we can creat UIButton() and give requered frame and add to navigationItem.setLeftBarButtonItems
// Please refere Belove code
// Swift 2.0
let btnBack = UIButton()
btnBack.frame = CGRectMake(0, 0, 100, 64)
btnBack.addTarget(self, action: "backAction", forControlEvents: UIControlEvents.TouchUpInside)
let leftBarBackBtn: UIBarButtonItem = UIBarButtonItem(customView: btnBack)
self.navigationItem.setLeftBarButtonItems([ leftBarBackBtn ], animated: false)
// Please submit your answer with Explanation comments to improve your Quality or Answer and question
另一答案
swift 3的最佳答案:
let homeButton = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
homeButton.setBackgroundImage(#imageLiteral(resourceName: "home-1"), for: .normal)
homeButton.addTarget(self, action: #selector(homePressed), for: .touchUpInside)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: homeButton)
另一答案
func createFakeAndSearchCurrentLocationBarButton (vw: UIViewController) {
let fakeCurrentLocationGo = UIButton(type: .custom)
fakeCurrentLocationGo.setImage(UIImage(named: "reallocationgo50"), for: .normal)
fakeCurrentLocationGo.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
fakeCurrentLocationGo.addTarget(vw, action: #selector(goToMyCurrentLocationPin), for: .touchUpInside)
let leftItem = UIBarButtonItem(customView: fakeCurrentLocationGo)
let searchLocationBtn = UIButton(type: .custom)
searchLocationBtn.setImage(UIImage(named: "search"), for: .normal)
searchLocationBtn.frame = CGRect(x: 0, y: 0, width: 15, height: 15)
fakeCurrentLocationGo.addTarget(vw, action: #selector(searchLocationHandle), for: .touchUpInside)
let rightItem = UIBarButtonItem(customView: searchLocationBtn)
vw.navigationItem.setRightBarButtonItems([leftItem,rightItem], animated: true)
}
以上是关于在swift中更改UINavigationBar中UIBarButtonItem的宽度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中更改 UINavigationBar 中的编辑/完成按钮标题 [重复]
快速更改 UINavigationBar 中 UIBarButtonItem 的宽度
UINavigationBar.appearance().tintColor 在 Swift 中不起作用
如何在 swift 4 中更改 NavBar 标题文本颜色?