主題胀溺,實(shí)際上更專業(yè)的說法是摳圖棕所。
具體的邏輯是通過 UIBezierPath 可以描繪出不規(guī)則的形狀,在通過這樣不規(guī)則的形狀進(jìn)行摳圖扳还。
代碼勝千言:
/**
通過曲線返回視圖對(duì)應(yīng)的UIImage
@param bezierPath 貝爾曲線
@return 返回UIImage
*/
- (UIImage*)maskWithBezierPath:(UIBezierPath*)bezierPath {
// 通過曲線創(chuàng)建一個(gè)圖層
CAShapeLayer* layer = [[CAShapeLayer alloc] init];
layer.frame = self.bounds;
layer.path = bezierPath.CGPath;
layer.fillColor = [UIColor blackColor].CGColor;
// 當(dāng)前視圖也變了
self.layer.mask = layer;
// 有UIView ---> UIImage
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 返回
return image;
}
上面的實(shí)現(xiàn)很粗超,有很多的地方是沒有考慮到的.比如起始點(diǎn)橱夭。