2012-04-25 75 views
3

我有一個按鈕的背景圖像,尺寸爲80x30像素。iPhone UINavigationBar - 設置rightBarButtonItem的寬度和邊距

我用下面的代碼來設置我的視圖 - 控制器的背景下,其結果是這樣的:

Top and corners are noisy

正如你所看到的,四角和右鍵的頂部是亂七八糟向上。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    UIImage *favoriteBtnImgNormal = [[UIImage imageNamed:@"favorite-btn-normal"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 30, 0)]; 
    UIImage *favoriteBtnImgTouch = [[UIImage imageNamed:@"favorite-btn-touch"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 30, 0)]; 

    [self.navigationItem.rightBarButtonItem setBackgroundImage:favoriteBtnImgNormal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [self.navigationItem.rightBarButtonItem setBackgroundImage:favoriteBtnImgTouch forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [self.navigationItem.rightBarButtonItem setBackgroundImage:favoriteBtnImgTouch forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
    [self.navigationItem.rightBarButtonItem setTitlePositionAdjustment:UIOffsetMake(-10.0, 0.0) forBarMetrics:UIBarMetricsDefault]; 
} 

請注意,我在單個視圖控制器中執行此操作,我使用外觀API設置常規樣式。但在這裏我想覆蓋一般的外觀。

如果我剛剛得到的圖像,而不可調整大小-的東西,它看起來像這樣:

Too large

現在的棱角都很好,但按鈕過大。

我確定我這樣做都是錯誤的,所以我需要有人指出我能做些什麼來正確縮放按鈕?

回答

0
UIImage *image = [UIImage imageNamed:@"YourImage"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

button.bounds = CGRectMake(0, 0, image.size.width, image.size.height); 

[button setImage:image forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(YourAction) forControlEvents:UIControlEventTouchUpInside]; 

button.contentEdgeInsets = (UIEdgeInsets){.right=-10}; 

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease]; 
+0

請使用代碼工具。 – Castiblanco 2013-04-03 03:50:20

+0

嗨,歡迎來到Stackoverflow!請閱讀[如何回答問題指南](http://stackoverflow.com/questions/how-to-answer)。答案應該不僅僅是代碼轉儲或其他站點的鏈接。答案應該能夠獨立存在並且包含足夠的上下文以使其有意義。 – slm 2013-04-03 04:03:09

+0

我意識到我的問題沒有回答,儘管我已經找到了一種方法來實現我想要的使用外觀API,並使用重新大小的圖像,這是最好的方式去做這件事。 – MartinHN 2013-04-03 07:11:45

相關問題