2012-05-23 8 views
5

Korzystanie z UIBarbuttonItem, initWithImage Otrzymuję obraz, który chcę pomniejszyć.Jak zmienić rozmiar obrazu UIBarButtonItem

Mam wrażenie, że nie ma absolutnie żadnej możliwości zmiany rozmiaru obrazu.

UIedgeInsetMake nie działa wcale. Zmiana rozmiaru obrazu nie działa (pixelate). Mam ikonę @ 2x 48x48 i normalną 24 x 24. tworzenie nowego obrazu z większą pustą ramką nie działa.

Jeśli użyję rozmiaru 20x20, piksel będzie wyświetlany. nieważne co.

Jakieś rozwiązanie? Dzięki!

Odpowiedz

1

Jeśli chcesz zmienić rozmiar przycisku, aby dopasować obraz, może lepiej utworzyć UIButton i uczynić niestandardowym UIBarButtonItem. In UIBarButtonItem initWithImage Obraz jest skalowany, aby pasował do UIBarButtonItem.

Zobacz this anser, aby uzyskać więcej informacji o tym, jak to zrobić.

+0

Dziękuję za odpowiedź, ale wielkość przycisków jest w porządku, w rzeczywistości jest to idealne. To obraz w środku chcę mniejszy. –

3

Można użyć niestandardowego BarbuttonItem aby ustawić obraz i dostosować rozmiar z rozmiarem tytułowej za pomocą metody poniżej:

+(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]; 

} 

Ta metoda pozwala zrobić dynamiczny rozmiar przycisku pożądaniem obrazu. Tutaj użyłem stretchableImageWithLeftCapWidth, aby dostosować obraz. Myślę, że to ci pomoże. Możesz użyć całej metody, aby utworzyć niestandardowy przycisk BarButton.

+0

ładny kod, ale to nie jest to, czego szukam. Nie chcę "narysować" niestandardowego przycisku. Chcę klasycznej barbuttonItem z obrazem w środku odrobinę mniejszym niż to, co jest domyślnie rysowane wewnątrz. –

5

ten może być osiągnięty przez Poniżej

  1. otwarty rozmiar inspektor UIBarbuttonItem
  2. zmian wartości dla „bar pozycji” -> Obraz blat -> góra/dół/lewo/prawo.

Spróbować ...

+0

To działa dla mnie doskonale. Szczególnie przydatne w przypadku obrazów .PDF –