[iphone] Comment remplir l'image de fond d'un UIView


Answers

Pour Swift, utilisez ceci ...

UIGraphicsBeginImageContext(self.view.frame.size)
UIImage(named: "ImageName.png")?.draw(in: self.view.bounds)

if let image = UIGraphicsGetImageFromCurrentImageContext(){
    UIGraphicsEndImageContext()
    self.view.backgroundColor = UIColor(patternImage: image)
}else{
    UIGraphicsEndImageContext()
    debugPrint("Image not available")
 }
Question

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 arrière n'est pas centrée dans la vue, mais elle est rejouée quelques fois pour remplir toute la vue. Existe-t-il un moyen de centrer l'image à l'intérieur de uiview et de l'agrandir pour obtenir la taille de l'écran?

Note: Je ne peux pas utiliser UIImageView pour le fond parce que j'ai un scrollview .




Pour Swift 3.0, utilisez le code suivant:

    UIGraphicsBeginImageContext(self.view.frame.size)
    UIImage(named: "bg.png")?.drawAsPattern(in: self.view.bounds)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    self.view.backgroundColor = UIColor(patternImage: image)



Swift 4 Solution:

@IBInspectable var backgroundImage: UIImage? {
    didSet {
        UIGraphicsBeginImageContext(self.frame.size)
        backgroundImage?.draw(in: self.bounds)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        if let image = image{
            self.backgroundColor = UIColor(patternImage: image)
        }
    }
}



Répéter:

UIImage *img = [UIImage imageNamed:@"bg.png"];
view.backgroundColor = [UIColor colorWithPatternImage:img];

Étiré

UIImage *img = [UIImage imageNamed:@"bg.png"];
view.layer.contents = img.CGImage;



Corriger la façon de faire dans Swift 4 , Si votre image est correcte, alors mettez n'importe où sinon, il est important de l'écrire dans viewDidLayoutSubviews parce que nous pouvons obtenir une image dans viewDidLayoutSubviews

   override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        UIGraphicsBeginImageContext(view.frame.size)
        UIImage(named: "myImage")?.draw(in: self.view.bounds)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        view.backgroundColor = UIColor.init(patternImage: image!)
    }



Related