UIBezierPath addClip 和 drawRect
UIBezierPath addClip and drawRect
我知道有一种绘制圆角矩形的方法 - UIBezierPath(roundedRect, cornerRadius)
但是我想知道如果我自己剪角,为什么要在画矩形之前先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()
}
如果您将绘图区域想象成 sheet 张纸,那么剪裁 并不 意味着您在绘图后用剪刀剪下一些东西。相反,它更像是在 sheet 上放置一个模板,然后只有打孔的区域与绘图相关。
这个概念为您提供了更大的灵活性,因为您可以随时移除或更换模板,即设置新的剪切路径,这对于更复杂的绘图非常有用。
我知道有一种绘制圆角矩形的方法 - UIBezierPath(roundedRect, cornerRadius)
但是我想知道如果我自己剪角,为什么要在画矩形之前先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()
}
如果您将绘图区域想象成 sheet 张纸,那么剪裁 并不 意味着您在绘图后用剪刀剪下一些东西。相反,它更像是在 sheet 上放置一个模板,然后只有打孔的区域与绘图相关。
这个概念为您提供了更大的灵活性,因为您可以随时移除或更换模板,即设置新的剪切路径,这对于更复杂的绘图非常有用。