J'ai une seule image que je veux comme arrière-plan pour mon application, quel que soit le contrôleur de vue sur lequel ils se trouvent. Comment y parvenir?
Réponses
Trop de publicités?Voici comment définir un arrière-plan pour une image:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
Edit: Pour écrire ce que Felixyz a dit (et grâce à Manni), faites ceci dans votre délégué:
window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
Et dans chaque vue que vous voulez avoir l'image, procédez comme suit:
self.view.backgroundColor = [UIColor clearColor];
Cela dépend de votre type d'interface. Onglet? Basé sur la navigation? Mais la réponse générale est la suivante: ajoutez un UIImageView à votre UIWindow avant / en dessous de votre vue principale. Ensuite, faites en sorte que chaque vue gérée par votre contrôleur de vue principale ait un arrière-plan transparent. Difficile de donner des conseils plus spécifiques sans savoir si vous utilisez IB ou non, ni à quoi ressemble votre hiérarchie.
Dans mon application, je définis une couleur d'arrière-plan par défaut. Peut-être que vous pouvez le faire avec votre image de fond:
1 .: Définissez la couleur d’arrière-plan de votre UIWindow dans votre AppDelegate:
window.backgroundColor = [UIColor myBackgroundGray]; // own Category
2 .: Et maintenant, rendez toutes les autres vues transparentes:
self.view.backgroundColor = [UIColor clearColor]; // = transparent
Dans votre AppDelegate en
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Ajouter cette ligne:
[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
Une fois que vous avez juste à définir les fonds de vos vues sur [UIColor clearColor];
Je ne suis pas sûr des implications en termes de performances, mais je devais accomplir quelque chose de similaire et j'ai fini par utiliser un UIImageView qui fonctionne bien (en C #, mais fonctionne de la même manière en obj-c):
//Add the view controller first, to ensure proper order of views later.
Window.RootViewController = new UIViewController();
//create backdrop image view
var imageView = new UIImageView(Window.Bounds);
imageView.Image = UIImage.FromBundle("backdrop.jpg");
//insert into window.
Window.InsertSubview(imageView, 0);
Cela ne gère pas les changements d'orientation, mais dans mon cas, cela m'a permis d'ajouter des effets de mouvement à la toile de fond (comme la parallaxe).