2013-07-22 131 views
0

我已經能夠通過故事板獲得帶有嵌入式uibutton的自定義UIBarButtonItem。這是地圖按鈕。 看到這個截圖的參數,我不得不使用背景屬性,而不是圖像。以編程方式設置UIBarButtonItem的背景圖像更改尺寸

map bar button

但是,當我試圖以編程方式自定義一些uibarbuttons,那麼按鍵變小。當我使用Image屬性時,我與地圖按鈕的結果相同。

在這裏,我正在寫後退按鈕的代碼,

UIImage *backButtonImage = [[UIImage imageNamed:@"Retour.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(21, 21, 21, 21)] ; 
backButtonImage = [backButtonImage stretchableImageWithLeftCapWidth:0 topCapHeight:0]; 

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height); 
[button setBackgroundImage:backButtonImage forState:UIControlStateNormal]; 
[button setBackgroundImage:backButtonImage forState:UIControlStateHighlighted]; 

[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:button] ; 
self.navigationItem.leftBarButtonItem = backBarButton; 

我試着用或不用resizableImageWithCapInsets,stretchableImageWithLeftCapWidth與下面的結果相同(後退按鈕應該有大小的地圖按鈕相同)

我也試過iOS 5 setBackButtonBackgroundImage方法,但按鈕並沒有自定義。

navigation toolbar

回答

0

如果你沒有找到答案,您的問題,我可以建議你這個函數:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize 
{ 
    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

它返回比例調整爲指定大小的圖像。

因此,您可以調整圖像的大小,然後將其設置爲背景圖像。

相關問題