我需要在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)
}