web-dev-qa-db-fra.com

comment définir une image d'arrière-plan comme colorWithPatternImage dans swift

Ma question est la suivante: est-il possible qu’UIView affiche une image, et si oui, comment je le fais? Tout ce que je peux trouver, c'est la colorwithpatternImage qui ne fonctionne plus avec Swift. 

Le code que j'essaie d'utiliser maintenant est: 

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

Merci d'avance pour vos réponses!

42
Mark Calhoun

Reportez-vous à la documentation UIColor .

Dans Swift, vous devez appeler un initialiseur de commodité. En effet, dans Swift, toutes les méthodes de classe Objective-C qui renvoient une instance de leur classe deviennent des initialiseurs pratiques.

Voici à quoi ça ressemble dans Swift:

 self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))

+ (UIColor *)colorWithPatternImage:(UIImage *)image renvoie une instance UIColor, elle deviendra donc un initialiseur de commodité dans Swift. De même, UIImage imageNamed: devient init(patternImage image: UIImage!).

115
codester

Je préfère à celui-ci:

let backgroundImage = UIImageView(frame: UIScreen.mainScreen().bounds)
backgroundImage.image = UIImage(named: "background.png")
self.view.insertSubview(backgroundImage, atIndex: 0)

Puisque définir l'image en tant que backgroundColor le rendrait un peu flou.

8
User9527

Edited @ User9527 répond un peu. Je ne sais pas pourquoi il a été voté par terre .. Cela a très bien fonctionné pour moi. Je viens d'ajouter mon propre cadre personnalisé. 

let frame = CGRectMake(10, 55, 45, 45)
let backgroundImage = UIImageView(frame: frame)
backgroundImage.image = UIImage(named: "bg_image")
self.view.insertSubview(backgroundImage, atIndex: 0)
4
Dominic Smith

Si vous essayez la propriété layer d'une imageview, vous devriez utiliser quelque chose comme ceci 

userProfilePic.layer.borderColor = UIColor(patternImage:UIImage(named: "yourimg.png")!).CGColor
1
Suraj K Thomas

Cela m'a pris pas mal d'efforts, capturer et transmettre pour référence. Voir ci-dessous pour un exemple complet de génération et d'utilisation avec Swift.

Exemple de référence

Application de démonstration

 enter image description here

Extrait de code

Voici comment un UIView est texturé dans la démo, voir le code pour le listing complet -

func genTexturedView(_ view:UIView) {
    ...
    image.image = UIImage(named:"purple_example");
    view.addSubview(image);

    print("ViewController.genTexturedView():    Textured View added");

    return;
}
0
J-Dizzle