如何将边框和圆角半径应用于 UIBarButtonItem?
How to apply borders and corner radius to UIBarButtonItem?
我以编程方式创建了一个工具栏,并在其中添加了 UIBarButtonItem。
这是目前的样子:
我希望按钮有边框和角半径(弯曲的角)。
将如何实施?
UIBarButtonItem 实现代码:
let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")
不幸的是,没有内置的自动方法来执行此操作。您有两个选择:
您可以将其设为带有自定义视图的条形按钮项目,将该视图设为 UIButton,然后对该 UIButton 执行常规操作(您可以这样做,因为它是一个视图),方法是层的方式(给它一个边界和角半径)。
您可以(在代码中)绘制一个带有弯曲边框的背景图像,并将其用作栏按钮项目的图像。
如果可以找到与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)!)
这有点乱七八糟,但可以完成工作:
我用故事板来做。只需在 UiBarButtonItem 中添加 UIButton。喜欢这里
然后为 UIButton 添加边框
我以编程方式创建了一个工具栏,并在其中添加了 UIBarButtonItem。
这是目前的样子:
我希望按钮有边框和角半径(弯曲的角)。 将如何实施?
UIBarButtonItem 实现代码:
let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "donePressed:")
不幸的是,没有内置的自动方法来执行此操作。您有两个选择:
您可以将其设为带有自定义视图的条形按钮项目,将该视图设为 UIButton,然后对该 UIButton 执行常规操作(您可以这样做,因为它是一个视图),方法是层的方式(给它一个边界和角半径)。
您可以(在代码中)绘制一个带有弯曲边框的背景图像,并将其用作栏按钮项目的图像。
如果可以找到与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)!)
这有点乱七八糟,但可以完成工作:
我用故事板来做。只需在 UiBarButtonItem 中添加 UIButton。喜欢这里
然后为 UIButton 添加边框