在Swift中更改UINavigationBar中UIBarButtonItem的宽度

8

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

我尝试了以下代码:

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

但它无法工作

提前感谢


你是如何添加这个按钮的? - Johnykutty
我想只在框架内设置按钮点击,但是当我在按钮外面点击时它会调用该方法。 - Muruganandam Sathasivam
4个回答

17
// 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)

}

请更新以包括此代码块的解释。 - Thomas Smyth - Treliant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接