2015-09-15 16 views
6

So che c'è un metodo per disegnare una roundedRect - UIBezierPath(roundedRect, cornerRadius)UIBezierPath addClip e drawRect

Ma vorrei sapere se ho clip l'angolo da me, perché dovrei avere a addClip prima di disegnare un rettangolo? (Mi sento come clip di rettangolo dopo che è stato pareggio è più ragionevole. Che concetto mi sono perso?)

(1) lavoro

override func drawRect(rect: CGRect) { 
    var clipPath = UIBezierPath(roundedRect: rect, cornerRadius: 8.0) 
    path.addClip() 

    var rectPath = UIBezierPath(rect: rect) 
    UIColor.redColor().setFill() 
    rectPath.fill() 
} 

(2) non funziona

override func drawRect(rect: CGRect) { 
    var rectPath = UIBezierPath(rect: rect) 
    UIColor.redColor().setFill() 
    rectPath.fill() 

    var clipPath = UIBezierPath(roundedRect: rect, cornerRadius: 8.0) 
    path.addClip() 
} 

risposta

8

Se immagina l'area di disegno come un foglio di carta, il ritaglio non corrisponde a significa che hai tagliato qualcosa con una forbice dopo il disegno. Invece è più come mettere una scheda stencil sul foglio e solo le aree perforate sono rilevanti per il disegno allora.

Questo concetto offre una maggiore flessibilità, in quanto è possibile rimuovere o sostituire la scheda dello stampino in qualsiasi momento, ovvero impostare un nuovo percorso di ritaglio, che può essere molto utile per disegni più complessi.

+0

oh ~ ottima risposta! Grazie :) – Jenny