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

时间:2016-02-24 19:19:08

标签: swift uibarbuttonitem

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

目前的情况如下:

UIBarButtonItem

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

UIBarButtonItem实现代码:

let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")

3 个答案:

答案 0 :(得分:5)

如果您可以找到与UIBarButtonItem关联的UIView,则可以修改UIView.layer。但是,找到UIView并不容易。我使用了Figure out UIBarButtonItem frame in window?中的技术。从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) }
}

然后在viewDidAppear(或类似)

recurseViews((navigationController?.navigationBar)!)

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

button with border

答案 1 :(得分:1)

不幸的是,没有内置的自动方式来做到这一点。你有两个选择:

  • 你可以把它作为一个带有自定义视图的条形按钮项,使该视图成为一个UIButton,然后通过其图层对该UIButton(你可以做,因为它是一个视图)做常用的东西(给它一个边界和角半径)。

  • 您可以只绘制(在代码中)带有弯曲边框的背景图像,并将其用作条形按钮项目的图像。

答案 2 :(得分:0)

我使用情节提要进行此操作。只需在UiBarButtonItem中添加UIButton。像这里enter image description here

然后在UIButton上添加边框
enter image description here