android 贝塞尔曲线 人脸,贝塞尔曲线绘制人脸框(框内全透明,框外半透明)
参考CropImage 制作截取头像框https://github.com/cokeduo/CropImagehttps://www.jianshu.com/p/c883fbf52681//贝塞尔曲线画4个弧度UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, kScreenWidth, kSc
参考CropImage 制作截取头像框https://github.com/cokeduo/CropImage
https://www.jianshu.com/p/c883fbf52681
//贝塞尔曲线画4个弧度
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, kScreenWidth, kScreenHeight) cornerRadius:0];
UIBezierPath *headerPath = [UIBezierPath bezierPath];
headerPath.lineWidth = 2.0;
headerPath.lineCapStyle = kCGLineCapRound;
headerPath.lineJoinStyle = kCGLineJoinRound;
[headerPath moveToPoint:CGPointMake(kScreenWidth/2, 80+STATUS_BAR_Y)];
[headerPath addQuadCurveToPoint:CGPointMake(kScreenWidth*(1-0.75)/2+kScreenWidth*0.75, 80+STATUS_BAR_Y+kScreenWidth*0.35) controlPoint:CGPointMake(kScreenWidth*(1-0.75)/2+kScreenWidth*0.75, 80+STATUS_BAR_Y)];
[headerPath addQuadCurveToPoint:CGPointMake(kScreenWidth/2, 80+STATUS_BAR_Y+kScreenWidth) controlPoint:CGPointMake(kScreenWidth*(1-0.75)/2+kScreenWidth*0.75, 80+STATUS_BAR_Y+kScreenWidth)];
[headerPath addQuadCurveToPoint:CGPointMake(kScreenWidth*(1-0.75)/2, 80+STATUS_BAR_Y+kScreenWidth*0.35) controlPoint:CGPointMake(kScreenWidth*(1-0.75)/2, 80+STATUS_BAR_Y+kScreenWidth)];
[headerPath addQuadCurveToPoint:CGPointMake(kScreenWidth/2, 80+STATUS_BAR_Y) controlPoint:CGPointMake(kScreenWidth*(1-0.75)/2, 80+STATUS_BAR_Y)];
[headerPath stroke];
[path appendPath:headerPath];
[path setUsesEvenOddFillRule:YES];
CAShapeLayer *fillLayer = [CAShapeLayer layer];
fillLayer.path = path.CGPath;
//中间透明
fillLayer.fillRule = kCAFillRuleEvenOdd;
//半透明效果
fillLayer.fillColor = [UIColor colorWithHexString:@"0x000000" alpha:0.4].CGColor;
[self.layer addSublayer:fillLayer];
//绘制虚线边框
CAShapeLayer *vertulLineLayer = [CAShapeLayer layer];
vertulLineLayer.path = headerPath.CGPath;
vertulLineLayer.strokeColor = [UIColor whiteColor].CGColor;
vertulLineLayer.fillColor = [UIColor clearColor].CGColor;
vertulLineLayer.lineCap = kCALineCapRound;
vertulLineLayer.lineWidth = 2;
vertulLineLayer.lineDashPattern = @[@8,@8];
[self.layer addSublayer:vertulLineLayer];
更多推荐
所有评论(0)