2010-04-17 28 views
3

Je veux définir une image de fond de UIToolbar dans mon application iPhone.définition de l'image de fond de UIToolBar dans l'iphone

Actuellement, je définis en utilisant UIColorinitWithPatternImage:.

Mais ce n'est pas ce que je veux.

Veuillez suggérer une autre solution.

+4

Si initWithPatternImage ne fait pas ce que vous voulez, alors expliquer ce que vous voulez augmenterait vos chances d'obtenir une réponse. –

Répondre

3

Ou vous pouvez faire classe personnalisée et l'affecter à votre commande (par le constructeur d'interface) et à l'intérieur qui implémenter la méthode drawRect ...

comme

- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"CustomImage.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
+0

Ouais c'est une fonctionnalité cachée soignée que vous pouvez également utiliser pour personnaliser les barres de navigation dans un contrôleur de navigation. –

4

Vous n'avez pas besoin de créer une classe personnalisée. Vous pouvez ajouter une catégorie à UIToolBar comme ci-dessous

@implementation UIToolbar (UIToolbarCategory) 
- (void)drawRect:(CGRect)rect { 
    UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //whatever goes well with your background image. 
    UIImage *img = [UIImage imageNamed: @"your-navbar-img.png"]; 
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
    [img release]; 
    self.tintColor = color; 
    [super drawRect:rect]; 
} 
@end 

J'ai testé et cela fonctionne bien.

P.S: J'ai testé avec 4.3 la nuit dernière & cela ne fonctionnait pas comme prévu mais fonctionne bien avec 4.2. Je ne trouve aucune raison encore, mettra à jour une fois que je trouve l'extrait droit.

Pour les versions 4.3 et supérieures, l'addition de la catégorie UIToolbar ou UINavigationBar n'est pas prise en charge. Le code suivant fonctionne avec 4,3

#import <UIKit/UIKit.h> 


@interface MyAppToolBar : UIToolbar{ 

} 

@end 

@implementation MyAppToolBar 

- (void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
    UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //wood tan color 
    UIImage *img = [UIImage imageNamed: @"your-navbar-img.png"]; 
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
    [img release]; 
    self.tintColor = color; 

} 

@end 

Le problème avec la limitation est, vous devez changer l'objet CustomClass de chaque UIToolbar que vous avez dans tout votre fichier XIB au catalogue. Et je crains que cela n'affecte pas la barre de navigation lorsque vous ouvrez UIImagePickerController pour correspondre à votre style d'application.

+1

Vous devriez appeler [super drawRect: rect]; à la fin de votre drawRect: implémentation. – runmad

+0

Merci @canada dev mis à jour mon extrait. – palaniraja

+0

Vous ne devriez pas appeler release sur img ... – nickfox