Swift 4.2 CGPattern 使用

对于CGPattern的使用有很多很好的文章。在这里我给大家有一篇官方的文档,介绍的很详细,现在用Swift 4.2版本来实现。

        let pattern = CGPattern(info: nil, bounds: bounds, matrix: CGAffineTransform.identity, xStep: 40, yStep: 40, tiling: CGPatternTiling.constantSpacingMinimalDistortion, isColored: true, callbacks: &callBacks);
        
        let context = UIGraphicsGetCurrentContext();
        context?.addRect(bounds);
        let paterColor = CGColorSpace(patternBaseSpace: CGColorSpace(name: CGColorSpace.sRGB)!);
        context?.setFillColorSpace(paterColor!);
        var alph: CGFloat = 1;

        context?.setFillPattern(pattern!, colorComponents: &alph);
        context?.fillPath();

首先创建一个 CGPattern,第一个参数传nil,第二个参数是需要铺的大小,第三个是矩阵,第四个是瓦片的横间距,第5个参数是竖间距,第六格式平铺的模式,第7个是是否指定颜色,最后一个是回调。

    quartz 提供三种选项,在必要的时候来调整pattern。

  • pattern 通过调整pattern cell之间的间距为代价来适配pattern。这种无失真。NoDistortion
  • cell之间以稍微扭曲模式来适配pattern。这种模式恒定间距的最小失真。ConstantSpacingMinimalDistortion
  • cell之间的间距以牺牲pattern cell的扭曲成都来获取快速平铺。这被称为恒定间距。ConstantSpacing

下面是回调:

    var callBacks = CGPatternCallbacks(version: 1, drawPattern: { (pointer, context) in
        
        context.addRect(.init(x: 0, y: 0, width: 20, height: 20));
        let cgColor = UIColor.red.cgColor;
        context.setStrokeColor(cgColor);
        context.strokePath();
    }) { (pointer) in
        print("释放资源");
    };

这个是回到函数。

运行效果如下图:

效果图
 

只是边框的模式,也可以用填充模式,照葫芦画瓢,自己动手改改了,或者我们可以交流一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值