How to Get the reverse path of a UIBezierPath

后端 未结 4 1423
花落未央
花落未央 2021-02-07 14:56
self.myPath=[UIBezierPath bezierPathWithArcCenter:center 
                                           radius:200 
                                       startAngle:0 
            


        
4条回答
  •  感情败类
    2021-02-07 15:03

    You can put this into a single screen app into the view controller: It will make a yellow background view and a blue layer on top of it that has an oval region cut out by a mask.

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    
        // create a yellow background
        UIView *bg = [[UIView alloc] initWithFrame:self.view.bounds];
        bg.backgroundColor = [UIColor yellowColor];
        [self.view addSubview:bg];    
    
        // create the mask that will be applied to the layer on top of the 
        // yellow background
        CAShapeLayer *maskLayer = [CAShapeLayer layer];
        maskLayer.fillRule = kCAFillRuleEvenOdd;
        maskLayer.frame = self.view.frame;
    
        // create the paths that define the mask
        UIBezierPath *maskLayerPath = [UIBezierPath bezierPath];
        [maskLayerPath appendPath:[UIBezierPath bezierPathWithRect:CGRectInset(self.view.bounds, 20, 20)]];
        // here you can play around with paths :)
    //    [maskLayerPath appendPath:[UIBezierPath bezierPathWithOvalInRect:(CGRect){{80, 80}, {140, 190}}]];
        [maskLayerPath appendPath:[UIBezierPath bezierPathWithOvalInRect:(CGRect){{100, 100}, {100, 150}}]];
        maskLayer.path = maskLayerPath.CGPath;
    
        // create the layer on top of the yellow background
        CALayer *imageLayer = [CALayer layer];
        imageLayer.frame = self.view.layer.bounds;
        imageLayer.backgroundColor = [[UIColor blueColor] CGColor];
    
        // apply the mask to the layer
        imageLayer.mask = maskLayer;
        [self.view.layer addSublayer:imageLayer];
    
    }
    

    this might answer this question as well: UIBezierPath Subtract Path

提交回复
热议问题