2013-09-26 150 views
2

在我的應用程序中,我在界面生成器中設計了一個視圖。
這種觀點有一個工具欄,在一些的UIBarButtonItem。在UIBarButtonItem中添加邊框

我的按鈕可以自定義圖像,或類似的份額默認按鈕,添加...
現在與iOS7,按鈕沒有了邊界。所以我想補充一些。 enter image description here

這是我想要做的:在屏幕截圖上添加像白線一樣的邊框。 我試過的是添加一個UIButton到工具欄。在我的例子中,我設置了我的後退按鈕大小(12x44)。我添加此按鈕爲我的視圖控制器的IBOutlet中的財產,並嘗試繪製邊框它:

CALayer *cancelBorder = [CALayer layer]; 
[cancelBorder setFrame:CGRectMake(12, 0, 1, 44)]; 
[backBorder setBackgroundColor:[[UIColor whiteColor] CGColor]]; 
[backButton.layer addSublayer:cancelBorder]; 

但它不工作。任何人都有解決方案?

+0

你cancelBorder可能是你的後退按鈕的界限的。你說你的backButton的寬度爲12,你的cancelBorder的x偏移量爲12.所以,cancelBorder開始在你的backButton的邊界之外,因此它將不可見(假設按鈕有cli​​pToBounds = YES,那我認爲它是)。也許試着用8或者其他東西來看它是否可見。因爲在邊緣它必須是11的偏移量。 –

回答

7

以編程方式將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

這不起作用 – vboombatz

1

斯威夫特3:下面是我的自定義按鈕和事件處理全面實施。

Test UIBarButtonItem

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 
} 

希望這有助於