2010-04-15 5 views
1

Est-il possible d'avoir le même arrière-plan entre les onglets d'un UITabBarController sans avoir à définir le même arrière-plan sur toutes les vues? Je veux mettre en arrière plan une vue qui fait périodiquement une animation très courte, non intensive en ressources. Lorsque vous changez d'onglet, j'aimerais que cette animation persiste. J'ai lu comment le faire pour UINavigationControllers, mais n'ai pas trouvé de conseils pour un UITabBarController.Partager l'affichage en arrière-plan entre les onglets d'un UITabBarController

Répondre

0

Créer un contrôleur de vue principale qui aura l'arrière-plan puis à partir de ce contrôleur ajouter d'autres vues avec un arrière-plan transparent, vous pouvez également mettre votre arrière-plan dans la fenêtre de votre application.

thierry

5

J'ai créé une catégorie Additions UITabBarController qui vous permet de le faire. Gardez à l'esprit que le UIViewController sélectionné devra être transparent pour que vous puissiez voir l'image d'arrière-plan.

//UITabBarController+CCAdditions.h

@interface UITabBarController (CCAdditions) 

- (void) setBackgroundImage:(UIImage *)i; 

@end 

//UITabBarController+CCAdditions.m

#import "UITabBarController+CCAdditions.h" 

@implementation UITabBarController (CCAdditions) 

- (void) setBackgroundImage:(UIImage *)i { 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
    imageView.backgroundColor = [UIColor colorWithPatternImage:i]; 
    [[self view] addSubview:imageView]; 
    [[self view] sendSubviewToBack:imageView]; 
    [[self view] setOpaque:NO]; 
    [[self view] setBackgroundColor:[UIColor clearColor]]; 
    [imageView release]; 
} 

@end 

// exemple d'utilisation dans un apdelegate

#import "UITabBarController+CCAdditions.h" 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    [tabBarController setBackgroundImage:[UIImage imageNamed:@"icon.png"]]; 
    [tabBarController.view setNeedsDisplay]; 
    return YES; 
} 

J'utilise colorWithPatternImage à la place de backgroundImage, car il permet de mosaïque lorsque cela est nécessaire

+0

Cela ne semble pas fonctionner pour moi. Je vois toujours le 'UITabBarController' par défaut (fond noir). – fuzz

+0

Je viens de vérifier iOS 5 - et ça marche toujours. –

+0

Comment rendriez-vous l'image facilement accessible? donc vous pouvez facilement le changer, ajouter plus de sous-vues etc? Pour autant que je sache, les catégories ne vous permettent pas de faire des propriétés ..? – cannyboy

Questions connexes