72 votes

Comment remplir l'image de fond d'un UIView

J'ai un uiview et je définis une image de fond de cette façon:

 self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sfond-appz.png"]];
 

Mon problème est que l'image d'arrière-plan n'est pas centrée dans la vue, mais qu'elle est rejouée à plusieurs reprises pour remplir toute la vue. Existe-t-il un moyen de centrer l'image dans uiview et de sélectionner une taille d'écran? Note: Je ne peux pas utiliser UIImageView pour le fond car j'ai un scrollview.

284voto

mr.pppoe Points 2095

Vous devez traiter l’image au préalable pour obtenir une image centrée et étirée. Essaye ça:

 UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.view.backgroundColor = [UIColor colorWithPatternImage:image];
 

58voto

Zaid Khan Points 15

Pour Swift, utilisez ceci ...

     UIGraphicsBeginImageContext(self.view.frame.size)
    UIImage(named: "ImageName.png").drawInRect(self.view.bounds)

    var image: UIImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    self.view.backgroundColor = UIColor(patternImage: image)
 

18voto

Mundi Points 33074

L' colorWithPattern: méthode est vraiment pour la génération de modèles à partir d'images. Ainsi, la personnalisation que vous avez besoin est probablement pas possible, il n'est ni destiné à l'être.

En effet, vous devez utiliser un UIImageView au centre et à l'échelle une image. Le fait que vous avez un UIScrollView n'empêche pas ce:

Faire self.view d'une vue générique, puis ajoutez les deux UIImageView et de la UIScrollView comme des sous-vues. Assurez-vous que tout est branché correctement dans Interface Builder, et de faire de la couleur d'arrière-plan de défilement de la vue transparente.

C'est à mon humble avis la plus simple et la plus flexible de la conception de modifications futures.

1voto

Jayprakash Dubey Points 1194

Vous pouvez utiliser la méthode UIGraphicsBeginImageContext pour définir la taille d'une image identique à celle de la vue.

Syntaxe: void UIGraphicsBeginImageContext (taille CGSize);

  #define IMAGE(imageName) (UIImage *)[UIImage imageWithContentsOfFile:
  [[NSBundle mainBundle] pathForResource:imageName ofType:IMAGE_TYPE_PNG]]

        UIGraphicsBeginImageContext(self.view.frame.size);
        [[UIImage imageNamed:@"MyImage.png"] drawInRect:self.view.bounds];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

    self.view.backgroundColor = [UIColor colorWithPatternImage:IMAGE(@"mainBg")];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X