在swift中更改UINavigationBar中UIBarButtonItem的宽度

问题描述 投票:8回答:4

我需要在swift 2.0中为我的导航栏按钮设置框架

我试过这段代码

self.navigationController!.navigationBar.drawRect(CGRectMake(0, 0, 30, 30)) 

但它不会起作用

提前致谢

swift ios7
4个回答
16
投票
// 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)

2
投票
    // 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

1
投票

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)

0
投票
    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)

}
© www.soinside.com 2019 - 2024. All rights reserved.