2015-09-15 17 views
6

私はroundedRectを描画する方法があります知っている - UIBezierPath(roundedRect, cornerRadius)UIBezierPath addClipとのdrawRect

しかし、私は自分でコーナーをクリップ場合、なぜ私は四角形を描画する前にaddClipする必要があります知っていただきたいと思いますか?

は、(1)

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)

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() 
} 

答えて

8

場合には動作しない仕事(それは引き分けがより合理的である。私はどのようなコンセプトを見逃したのか?だった後、私は、矩形クリップのように感じます)描画領域を紙のように想像してください。はありません。は、描画後にハサミで切り取ったものです。代わりに、それはシート上にステンシルボードを置くようなものであり、打ち抜かれたエリアだけが描画に関連します。

この概念は、いつでもステンシルボードを取り外したり交換したりすることができます。つまり、新しいクリッピングパスを設定することができます。これは、より複雑な図面に非常に役立ちます。

+0

ああ〜素晴らしい答え!ありがとうございました :) – Jenny