如何使用Swift 3

时间:2017-04-11 05:10:52

标签: swift3 uinavigationbar uibarbuttonitem uinavigationitem

我想在条形按钮的左侧添加空格。

enter image description here

所以,我添加了这段代码。

    navbar.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin, .flexibleRightMargin]
    navbar.delegate = self

    UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green:49.0/255.0, blue:79.0/255.0, alpha:0.1)

    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().isTranslucent = true
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

    navItem.title = prefs.value(forKey: "PROVIDER_NAME") as! String?
    let image = UIImage(named: "back_image")
    navItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(addTapped))

添加此代码后,按钮图像显示效果不佳,看起来不太好。

enter image description here

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

下面给出的代码可能对您有用。

extension UIBarButtonItem {
    class func itemWith(colorfulImage: UIImage?, target: AnyObject, action: Selector) -> UIBarButtonItem {
        let button = UIButton(type: .custom)
        button.setImage(colorfulImage, for: .normal)
        button.frame = CGRect(x: 0.0, y: 0.0, width: 44.0, height: 44.0)
        button.imageEdgeInsets = UIEdgeInsetsMake(0, -50, 0, 0)
        button.addTarget(target, action: action, for: .touchUpInside)

        let barButtonItem = UIBarButtonItem(customView: button)
        return barButtonItem
    }
}

您可以根据左边填充的要求,为Left Padding增加或减少UIEdgeInsetsMake(0, -50, 0, 0)

您可以在代码中使用以上扩展名,如下所述。

self.navigationItem.leftBarButtonItem = UIBarButtonItem.itemWith(colorfulImage: UIImage(named: "ic_back")?.withColor(UIColor.white), target: self, action: #selector(btnBackClicked))

func btnBackClicked() {
    print("your code here on back button tapped.")

}