本文主要是介绍iOS CAShapeLayer的FillRule属性总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在贝塞尔曲线画图形的时候 有时候需要嵌套子路径 addPath 比如最近需要画一个正方形中间嵌套一个圆形 来获取头像之类的需求
需要设置layer层来填充规则
填充的规则有两种即CAShapeLayer的FillRule属性有两种 默认是
kCAFillRuleNonZero
还有一种是
kCAFillRuleEvenOdd
第一种字面意思是非零 我看网上是指射线和图形的交点情况 有些不太懂 但是通过以下图
可以理解当在里面图形是和外围图形都是顺时针绘制的时候 就不会出现内嵌的情况 当外面图形是顺时针绘制而里面的图形是逆时针可以出现空心的情况
圆形的贝塞尔曲线是可以设置顺时针逆时针的
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
但是矩形的绘制是不能定义的 只能是顺时针
+ (instancetype)bezierPathWithRect:(CGRect)rect
导致绘制的内外图形如果都是顺时针就不能实现空心的效果 如果是圆形还可以设定 但是矩形的话就不行
但是第二种方法
kCAFillRuleEvenOdd
字面的意思是奇偶 网上的解释是从图形内做射线 与图形的交点 偶数是图形外 奇数是图形内 例如下图
这个其实和顺时针逆时针没有关系
这篇关于iOS CAShapeLayer的FillRule属性总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!