2017-10-16 47 views
1

Je ne comprends pas comment cette fonction fonctionne réellement Si je veux changer la couleur de fond de la « vue » Je vais aller acces fond propriété de la valeur de vue et le changement de celui-ciComment draw (_ rect: CGRect) fonctionne réellement?

let containerView = CustomView(frame: CGRect(x: 0, y: 0, width: 400, height: 400)) 
containerView.backgroundColor = UIColor.blue 

Mais quand je vouloir changer la couleur du rectangle dans la fonction draw() Je viens d'appeler la fonction UIColor.green.set(). Pourquoi cette fonction Changer la couleur du rectangle

class CustomView: UIView { 
    override func draw(_ rect: CGRect) { 
     super.draw(rect) 


     let rect = UIBezierPath(roundedRect: CGRect(x: 150, y: 150, width: 100, height: 100), cornerRadius: 5.0) 
     UIColor.green.set() // <- Why this line change rect color ? 
     rect.fill() 
    } 
} 
+0

Bonjour, @Moritz Désolé, je suis en train d'essayer de le réparer. – user8637708

+0

Beaucoup mieux maintenant. Continuez s'il vous plaît à l'améliorer. Bonne chance! :) – Moritz

+0

Vey apprécier Merci @Moritz – user8637708

Répondre

0

A UIView possède une propriété .backgroundColor. Lorsque UIKit souhaite afficher la vue, il vérifie la propriété .backgroundColor et "remplit" l'arrière-plan avec cette couleur.

UIColor.green.set() et rect.fill() ne le fait pas changement la couleur d'arrière-plan de la vue.

Lorsque vous remplacez la fonction draw(_ rect: CGRect), UIKit a déjà fait son traitement de .backgroundColor propriété, et rempli l'arrière-plan si nécessaire. Votre code puis "dessine un rectangle rempli" sur l'arrière-plan.

+0

Merci @DonMag J'ai une petite question "UIColor.green.set()" est juste une fonction. Je ne comprends pas Pourquoi cette fonction peut changer Rect Color? – user8637708

+0

Il ne change pas la couleur Rect ... il "définit" la couleur à utiliser par la fonction 'fill()'. – DonMag

+0

oh ok je le comprends maintenant Merci @DonMag – user8637708