我已经以编程方式创建了一个工具栏,我已经添加了一个UIBarButtonItem。
目前的情况如下:
我希望按钮具有边框和角半径(弯角)。 如何实施?
UIBarButtonItem实现代码:
let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")
答案 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)!)
这有点像黑客,但做的工作:
答案 1 :(得分:1)
不幸的是,没有内置的自动方式来做到这一点。你有两个选择:
你可以把它作为一个带有自定义视图的条形按钮项,使该视图成为一个UIButton,然后通过其图层对该UIButton(你可以做,因为它是一个视图)做常用的东西(给它一个边界和角半径)。
您可以只绘制(在代码中)带有弯曲边框的背景图像,并将其用作条形按钮项目的图像。
答案 2 :(得分:0)