2012-01-24 56 views
2

在我的iPhone應用程序,無法用自定義視圖觸發欄按鈕項目?

我有一個導航欄圖像設置我已經設置像這樣....

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){ 

     [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationBarReady.png"] forBarMetrics:UIBarMetricsDefault]; 
    } 

    UIBarButtonItem *bbiLeft=[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btnBack.png"] style:UIBarButtonItemStylePlain target:self action:@selector(btnBackPressed:)]; 
    [bbiLeft setTintColor:[UIColor clearColor]]; 
    [bbiLeft setBackgroundVerticalPositionAdjustment:7.0f forBarMetrics:UIBarMetricsDefault]; 
    self.navigationItem.leftBarButtonItem=bbiLeft; 

看起來像這樣...

enter image description here

我想將其顏色設置爲導航欄的背景

如何?? 謝謝..

+1

嘗試真的很難避免使用自定義視圖來定位UIBarButtonItem,但閱讀文檔我發現爲什麼'setBackgroundVerticalPositionAdjustment:forBarMetrics:'不適用於UIButtonTypeCustom。來自Apple文檔:'此偏移量用於調整條內邊界條形按鈕的垂直居中。「 - notice * BORDERED * –

回答

2

得到的答案...

/* Back Button setted*/  
    UIButton *btnBack=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [btnBack addTarget:self action:@selector(btnBackPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [btnBack setImage:[UIImage imageNamed:@"btnBack.png"] forState:UIControlStateNormal]; 
    [btnBack setFrame:CGRectMake(0, 0, 51,16)]; 
    UIView *backModifiedView=[[UIView alloc] initWithFrame:btnBack.frame]; 
    [btnBack setFrame:CGRectMake(btnBack.frame.origin.x, btnBack.frame.origin.y+7, btnBack.frame.size.width, btnBack.frame.size.height)]; 
    [backModifiedView addSubview:btnBack]; 
    UIBarButtonItem *bbiLeft=[[UIBarButtonItem alloc] initWithCustomView:backModifiedView]; 
     self.navigationItem.leftBarButtonItem=bbiLeft; 



/* Arpit */ 
//set Navgation Bar. 
    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){ 

     [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationBarReady.png"] forBarMetrics:UIBarMetricsDefault]; 
    } 
0

設置tintColor以清除不工作,你應該選擇的酒吧背景相匹配的顏色。

此外,您可能需要設置UINavigationBar的tintColor,而不是UIBarButtonItem本身的tintColor,因爲導航欄負責爲它自己的按鈕項設置顏色。

相關問題