2012-05-23 1 views
5

Использование UIBarbuttonItem, initWithImage Я получаю снимок, который я хочу уменьшить.Как изменить размер изображения UIBarButtonItem

Я чувствую, что нет абсолютно никакого способа изменить размер изображения.

UIedgeInsetMake не работает вообще. Изменение размера picutre не работает (pixelate). У меня есть значок @ 2x 48x48 и обычный 24x24. создание нового изображения с более широкой пустой границей не работает.

Если я использую 20x20, он будет пикселизоваться. не важно что.

Любое решение? Благодаря!

ответ

1

Если вы хотите изменить размер кнопки в соответствии с изображением, лучше создать UIButton и настроить UIBarButtonItem. В UIBarButtonItem initWithImage Изображение масштабируется, чтобы соответствовать UIBarButtonItem.

Часы this anser для получения дополнительной информации о том, как это сделать.

+0

Спасибо за ваш ответ, но размер кнопки хорошо, на самом деле это прекрасно. Это изображение, нарисованное внутри, я хочу меньше. –

3

Вы можете использовать пользовательский BarbuttonItem для установки изображения и регулировки размера с размером заголовка с помощью сильфона метода:

+(UIBarButtonItem *)createToolBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
// Since the buttons can be any width we use a thin image with a stretchable center point 
UIImage *buttonImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseup.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
UIImage *buttonPressedImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseover.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
[[button titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0f]]; 
//[[button titleLabel] setFont:[UIFont fontWithName:@"Futura-Medium" size:12.0]]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
[[button titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)]; 

CGRect buttonFrame = [button frame]; 
buttonFrame.size.width = [t sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 24.0; 

//Applicable only for iPhone FrameFun 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[[NSUserDefaults standardUserDefaults] stringForKey:@"is_Landscape"] isEqualToString:@"landscape"]) { 
    buttonFrame.size.height = 23.0; 
}else { 

    buttonFrame.size.height = buttonImage.size.height; 
} 

[button setFrame:buttonFrame]; 

[button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted]; 

[button setTitle:t forState:UIControlStateNormal]; 

[button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
return [buttonItem autorelease]; 

} 

Этот метод позволит вам сделать динамический размер кнопки с желанием изображения. Здесь я использовал stretchableImageWithLeftCapWidth для настройки изображения. Я думаю, это поможет вам. Вы можете использовать весь метод для создания Custom BarButton.

+0

хороший код, но это не то, что я ищу. Я не хочу «нарисовать» пользовательскую кнопку. Я хочу классический barbuttonItem с изображением внутри, немного меньшим, чем то, что рисуется внутри по умолчанию. –

5

Это может быть достигнуто за счет следующих,

  1. открыт размер инспектор UIBarbuttonItem
  2. изменения значения для "Bar Пункт" -> Image врезке -> верх/низ/левый/правый.

Дайте ему попробовать ...

+0

Это прекрасно работает для меня. Особенно полезно для изображений .PDF –