2012-05-23 12 views
5

Utilizzando UIBarbuttonItem, initWithImage ottengo un'immagine che voglio più piccola.Come modificare le dimensioni dell'immagine di UIBarButtonItem

Mi sembra che non sia assolutamente possibile ridimensionare l'immagine.

UIedgeInsetMake non funziona affatto. Anche il ridimensionamento del picutre non funziona (pixelato). Ho un'icona @ 2x 48x48 e una normale 24x24. la creazione di una nuova immagine con bordo vuoto più grande non funziona.

Se uso un 20x20 verrà pixelato. non importa cosa.

Qualsiasi soluzione? Grazie!

risposta

1

Se si desidera modificare la dimensione del pulsante in modo che corrisponda all'immagine, potrebbe essere preferibile creare un UIButton e rendere UIBarButtonItem personalizzato. In UIBarButtonItem initWithImageL'immagine viene ridimensionata per adattarsi a UIBarButtonItem.

Guarda this anser per ulteriori informazioni su come farlo.

+0

Grazie per la risposta, ma le dimensioni del pulsante va bene, in realtà è perfetta. È l'immagine disegnata dentro che voglio più piccola. –

3

È possibile utilizzare il BarbuttonItem personalizzato per impostare l'immagine e regolare le dimensioni con le dimensioni titolo utilizzando il metodo sotto:

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

} 

Questo metodo consentono di rendere la dimensione dinamica del pulsante di immagine il desiderio con. Qui ho usato stretchableImageWithLeftCapWidth per regolare l'immagine. Penso che ti aiuterà. È possibile utilizzare l'intero metodo anche per rendere BarButton personalizzato.

+0

bel codice ma non è quello che sto cercando. Non voglio "disegnare" un pulsante personalizzato. Voglio un classico barbuttonItem con un'immagine appena più piccola di quella che viene disegnata per impostazione predefinita. –

5

Ciò può essere ottenuto con la seguente,

  1. aperto ispettore dimensioni UIBarButtonItem
  2. modificare i valori per "Bar Item" -> Immagine incasso -> alto/basso/sinistra/destra.

Provatelo ...

+0

Questo funziona perfettamente per me. Soprattutto, utile per le immagini .PDF –

Problemi correlati