在我的应用中,我在界面构建器中设计了一个视图 此视图有一个工具栏,其中包含一些UIBarButtonItem。
我的按钮可以是自定义图像,也可以是分享,添加,...等默认按钮 现在使用iOS7,按钮不再具有边框。所以我想补充一些。
这是我想要做的:在我的屏幕截图上添加白线等边框。 我试过的是在工具栏中添加一个UIButton。在我的例子中,我设置了我的后退按钮大小(12x44)。我将此按钮添加为视图控制器的IBOutlet属性,并尝试绘制边框:
CALayer *cancelBorder = [CALayer layer];
[cancelBorder setFrame:CGRectMake(12, 0, 1, 44)];
[backBorder setBackgroundColor:[[UIColor whiteColor] CGColor]];
[backButton.layer addSublayer:cancelBorder];
但它不起作用。有人有解决方案吗?
答案 0 :(得分:8)
以编程方式将UIBarButtonItem添加到工具栏可能会解决您的问题。
首先,创建带有图像,边框等的自定义按钮。正如HereTrix所说,您可以为此按钮添加边框。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(10, 0, 30, 30);
button.layer.borderColor = [UIColor blueColor].CGColor;
button.layer.borderWidth = 1.0f;
/* any other button customization */
然后,使用该自定义按钮初始化UIBarButtonItem,并将此项添加到工具栏中。
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.toolBar.items = @[backButton];
答案 1 :(得分:3)
Swift 3 :以下是按钮自定义和事件处理的完整实现。
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton.init(type: .custom)
button.setTitle("Tester", for: .normal)
button.setTitleColor(.darkGray, for: .normal)
button.layer.borderWidth = 1
button.layer.cornerRadius = 5
button.layer.borderColor = UIColor.darkGray.cgColor
button.addTarget(self, action: #selector(self.handleButton), for: .touchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let button = self.navigationItem.rightBarButtonItem?.customView {
button.frame = CGRect(x:0, y:0, width:80, height:34)
}
}
func handleButton( sender : UIButton ) {
// It would be nice is isEnabled worked...
sender.alpha = sender.alpha == 1.0 ? 0.5 : 1.0
}
希望这有帮助