iOS CoreAnimation教程 第三篇

今天主要讲解图层的lineJoin miterLimit 属性。

lineJoin 连接点类型,对应曲线节点的显示样式。可能会受到miterLimit影响。看四个例子


kCALineJoinMiter样式
    CAShapeLayer * Star = [CAShapeLayer layer];
    Star.frame       = CGRectMake(102, 254.56, 183.74, 193.44);
    Star.lineCap     = kCALineCapRound;
    Star.lineJoin    = kCALineJoinMiter;
    Star.miterLimit  = 4;
    Star.fillColor   = [UIColor colorWithRed:0.847 green: 0.847 blue:0.847 alpha:1].CGColor;
    Star.strokeColor = [UIColor colorWithRed:0.592 green: 0.592 blue:0.592 alpha:1].CGColor;
    Star.lineWidth   = 15;
kCALineJoinRound样式
    CAShapeLayer * Star = [CAShapeLayer layer];
    Star.frame       = CGRectMake(102, 254.56, 183.74, 193.44);
    Star.lineCap     = kCALineCapRound;
    Star.lineJoin    = kCALineJoinRound;
    Star.fillColor   = [UIColor colorWithRed:0.847 green: 0.847 blue:0.847 alpha:1].CGColor;
    Star.strokeColor = [UIColor colorWithRed:0.592 green: 0.592 blue:0.592 alpha:1].CGColor;
    Star.lineWidth   = 15;
    Star.path        = [self StarPath].CGPath;
kCALineJoinBevel样式
    CAShapeLayer * Star = [CAShapeLayer layer];
    Star.frame       = CGRectMake(102, 254.56, 183.74, 193.44);
    Star.lineCap     = kCALineCapRound;
    Star.lineJoin    = kCALineJoinBevel;
    Star.fillColor   = [UIColor colorWithRed:0.847 green: 0.847 blue:0.847 alpha:1].CGColor;
    Star.strokeColor = [UIColor colorWithRed:0.592 green: 0.592 blue:0.592 alpha:1].CGColor;
    Star.lineWidth   = 15;
    Star.path        = [self StarPath].CGPath;
miterLimit 影响lineJoin样式
    CAShapeLayer * Star = [CAShapeLayer layer];
    Star.frame       = CGRectMake(102, 254.56, 183.74, 193.44);
    Star.lineCap     = kCALineCapRound;
    Star.lineJoin    = kCALineJoinMiter;
    Star.miterLimit  = 1;
    Star.fillColor   = [UIColor colorWithRed:0.847 green: 0.847 blue:0.847 alpha:1].CGColor;
    Star.strokeColor = [UIColor colorWithRed:0.592 green: 0.592 blue:0.592 alpha:1].CGColor;
    Star.lineWidth   = 15;
    Star.path        = [self StarPath].CGPath;

总结:miterLimit是最大斜接长度,只有lineJoin属性为kCALineJoinMiter时miterLimit才有效,当衔接角度太小时,斜接长度就会很大,如果设置了 miterLimit并且当斜接长度大于这个值时,便会对应裁切掉多余区域。就像上面第四种情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容