Swift 4.2 CGPattern 使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaojinhai06/article/details/88173080

对于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("释放资源");
    };

这个是回到函数。

运行效果如下图:

效果图
 

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

猜你喜欢

转载自blog.csdn.net/yaojinhai06/article/details/88173080