2015-09-15 18 views
6

Tôi biết có một phương pháp để vẽ một roundedRect - UIBezierPath(roundedRect, cornerRadius)UIBezierPath addClip và drawRect

Nhưng tôi muốn biết nếu tôi cắt góc của bản thân mình, tại sao tôi cần phải addClip trước khi vẽ một hình chữ nhật? (Tôi cảm thấy như cắt hình chữ nhật sau đó là trận hòa là hợp lý hơn. Khái niệm gì tôi lại bỏ lỡ?)

(1) làm việc

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) không hoạt động

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

Trả lời

8

Nếu bạn tưởng tượng khu vực vẽ như một tờ giấy, cắt không có nghĩa là bạn cắt một cái gì đó ra khỏi nó với một hình cắt kéo sau khi vẽ. Thay vào đó nó giống như đặt một bảng stencil trên tờ và chỉ có các khu vực đục lỗ có liên quan để vẽ sau đó. Khái niệm này mang lại cho bạn sự linh hoạt hơn, bởi vì bạn có thể loại bỏ hoặc trao đổi bảng stencil bất cứ lúc nào, tức là thiết lập một đường cắt mới, có thể rất hữu ích cho các bản vẽ phức tạp hơn.

+0

oh ~ câu trả lời tuyệt vời! Cảm ơn bạn :) – Jenny

Các vấn đề liên quan