带有 BG 颜色和文本的自定义 UIBarButtonItem Swift 3

Custom UIBarButtonItem With BG Colour and Text Swift 3

我的导航栏右侧有两个按钮。

extension UIViewController {

func setNavigationBarItem() {

    let profileButton   = UIBarButtonItem(title: "?", style: .plain, target: self, action: #selector(didTapProfileButton(_:)))
    navigationItem.rightBarButtonItems = [addRightBarButtonWithImage(UIImage(named: "menu")!), profileButton]

    self.slideMenuController()?.removeRightGestures()
    self.slideMenuController()?.addRightGestures()
    }
}

我已经创建了 2 个这样的按钮。但是我想要的 profileButton 具有背景颜色并且该按钮具有圆角半径。如何添加它以使其看起来像:

忽略黑色部分。 UIBarButton 将是黄色背景和圆角半径。

    let profileButton = UIButton()
    profileButton.frame = CGRect(x:0, y:0, width:30, height:30)
    profileButton.setTitle("SY", for: .normal)
    profileButton.setTitle("SY", for: .highlighted)
    profileButton.backgroundColor = UIColor.yellow
    profileButton.layer.cornerRadius = 5.0
    profileButton.addTarget(self, action: #selector(didTapProfileButton(_:)), for: .touchUpInside)

    let rightBarButton = UIBarButtonItem(customView: profileButton)
    self.navigationItem.rightBarButtonItem = rightBarButton

为此你只有一个选择,你需要创建 UIButton 具有你想要的设计的实例,然后从该按钮创建 UIBarButtonItem 实例。

let btnProfile = UIButton(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
btnProfile.setTitle("SY", for: .normal)
btnProfile.backgroundColor = UIColor.yellow
btnProfile.layer.cornerRadius = 4.0
btnProfile.layer.masksToBounds = true

现在从该按钮创建 UIBarButtonItem 并使用 rightBarButtonItems 进行设置。

navigationItem.rightBarButtonItems = [addRightBarButtonWithImage(UIImage(named: "menu")!), UIBarButtonItem(customView: btnProfile)]