UIView 通过 UIBezierPath 来进行切图的简单实

2017-09-07  本文已影响65人  CoderHG

主题,实际上更专业的说法是抠图。
具体的逻辑是通过 UIBezierPath 可以描绘出不规则的形状,在通过这样不规则的形状进行抠图。
代码胜千言:


/**
 通过曲线返回视图对应的UIImage

 @param bezierPath 贝尔曲线
 @return 返回UIImage
 */
- (UIImage*)maskWithBezierPath:(UIBezierPath*)bezierPath {
    // 通过曲线创建一个图层
    CAShapeLayer* layer = [[CAShapeLayer alloc] init];
    layer.frame = self.bounds;
    layer.path = bezierPath.CGPath;
    layer.fillColor = [UIColor blackColor].CGColor;
    
    // 当前视图也变了
    self.layer.mask = layer;
    
    // 有UIView ---> UIImage
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    // 返回
    return image;
}

上面的实现很粗超,有很多的地方是没有考虑到的.比如起始点

谢谢~

上一篇下一篇

猜你喜欢

热点阅读