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?
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, faites ceci:
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: 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 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 vos fonds de vues sur [UIColor clearColor];
Dans mon application, je définis une couleur d'arrière-plan par défaut. Peut-être que vous pouvez le faire avec vous 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
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).
Votre arrière-plan est une propriété de tout objet héritant de View. Les étiquettes, les boutons, les contrôleurs et la fenêtre de l'application, par exemple, ont tous un arrière-plan. Si vous voulez que ce soit complètement un bg pour l'ensemble de l'application, vous devez gravir le chemin dans vos contrôleurs pour trouver la vue même "en haut" (vue de dessous) et définir son arrière-plan pour être l'image que vous désirez.
appelez simplement ceci assignbackground
dans viewDidLoad
override func viewDidLoad() {
assignbackground()
}
func assignbackground(){
let background = UIImage(named: "background")
var imageview : UIImageView!
imageview = UIImageView(frame: view.bounds)
imageview.contentMode = UIViewContentMode.ScaleAspectFill
imageview.clipsToBounds = true
imageview.image = background
imageview.center = view.center
view.addSubview(imageview)
self.view.sendSubviewToBack(imageview)
}
J'utilise généralement cette fonction pour éviter les chevauchements avec la barre de navigation sur iPhone.
-(void)setImageBackground:(NSString*)imageName{
UINavigationController* navigationController = [self navigationController];
float height = navigationController.toolbar.frame.size.height;
CGSize size = self.view.frame.size;
size.height = size.height;
UIGraphicsBeginImageContext(size);
CGRect bounds = self.view.bounds;
bounds.Origin.y = bounds.Origin.y + height;
bounds.size.height = bounds.size.height-height;
[[UIImage imageNamed:imageName] drawInRect:bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
}