如何将边框和角半径应用于UIBarButtonItem?

Sup*_*dar 0 uibarbuttonitem swift

我已经以编程方式创建了一个工具栏,我已经添加了一个UIBarButtonItem.

这是目前的样子:

的UIBarButtonItem

我希望按钮有一个边框和一个角半径(弯角).如何实施?

UIBarButtonItem实现代码:

let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")
Run Code Online (Sandbox Code Playgroud)

emr*_*s57 6

如果您可以找到与UIBarButtonItem关联的UIView,则可以修改UIView.layer.但是,找到UIView并不容易.我在窗口中使用了图中的UIBarButtonItem框架的技术.从navigationController.navigationBar它本身就是一个开始UIView,我通过子视图递归,其中一个将是我想要的按钮.哪一个?选择你自己的标准!这是我的代码:

func recurseViews(view:UIView) {
    print("recurseViews: \(view)") // helpful for sorting out which view is which
    if view.frame.origin.x > 700 { // find _my_ button
        view.layer.cornerRadius = 5
        view.layer.borderColor = UIColor.redColor().CGColor
        view.layer.borderWidth = 2
    }
    for v in view.subviews { recurseViews(v) }
}
Run Code Online (Sandbox Code Playgroud)

然后在viewDidAppear(或类似)

recurseViews((navigationController?.navigationBar)!)
Run Code Online (Sandbox Code Playgroud)

这有点像黑客,但做的工作:

带边框的按钮