簡體   English   中英

無法為UIBarButtonItem設置圖像

[英]Cant set image for UIBarButtonItem

我正在嘗試為我的UIBarButtonItem設置圖像,但我無法做到這一點。 我嘗試了兩次,在第一種情況下,我將我的圖像放在正確的位置,但是當我點擊按鈕時沒有任何反應(它應該彈出一個新窗口,但沒有任何效果)。 我使用的是一段代碼:

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"];
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
    face.bounds = CGRectMake( 0, 0, faceImage.size.width, faceImage.size.height );
    [face setImage:faceImage forState:UIControlStateNormal];
   UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)];

    self.navigationItem.leftBarButtonItem = faceBtn;

在第二種情況下,我在按鈕上設置圖像並且應該出現新窗口,但是不僅我想要的自定義圖像,而且它還顯示“邊框”,看起來圖像被放在默認按鈕的中心。 顯然我只想要我的圖像,而不僅僅是我的圖像。 我在第二種情況下使用了一段代碼:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)];

    self.navigationItem.leftBarButtonItem = addButton;

請幫我解決問題,任何幫助都將不勝感激,謝謝!

試試這個...改變它的方法,根據你的形象

UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom];
[button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)];
[button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside];
[button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal];
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1];
self.navigationItem.leftBarButtonItem = button;

我修改了你的代碼並測試了按鈕中顯示的圖像。 請自己嘗試一下。 如果您遇到任何問題,請告訴我。

    UIImage *faceImage = [UIImage imageNamed:@"Badge.png"];
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
    face.bounds = CGRectMake( 0, 0, faceImage.size.width, faceImage.size.height );
    [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside];
    [face setImage:faceImage forState:UIControlStateNormal];
    UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];    
    self.navigationItem.leftBarButtonItem = faceBtn;

編輯:我在答案中添加了一行。 我剛剛在日志中打印了一條消息“嗨”。 這是工作。 你能試試嗎?

謝謝。

或者......只需編寫兩行iOS 8 Swift代碼。 (甚至可以在iOS 7中工作)

    let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed")
    navigationItem.leftBarButtonItem = doneButtonAsLeftArrow

任何人接受的答案的Swift版本

var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36))
settingsButton.setImage(image, forState: UIControlState.Normal)
settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside)

let rightBarButtonItem = UIBarButtonItem(customView: settingsButton)
navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true)
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)];

    self.navigationItem.leftBarButtonItem = addButton;

你正在創建一個默認按鈕,你需要創建一個UIButtonTypeCustom類型按鈕...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM