正在做的项目中有个优惠券的波浪侧边,如果不找美工要图,该如何做呢?
用正弦曲线切割!效果如图
思路是做个UIView,然后用画曲线线进行遮罩
- (void)sinView
{
CGRect bounds = self.viewColor.bounds;
//画一条贝塞尔曲线
UIBezierPath * maskPath = [UIBezierPath bezierPath];
//从A点开始
[maskPath moveToPoint:CGPointMake(0, bounds.size.height)];
//画A点到B点直线
[maskPath addLineToPoint:CGPointMake(bounds.size.width, bounds.size.height)];
//画B点到C点直线
[maskPath addLineToPoint:CGPointMake(bounds.size.width,0)];
//画C点到D点直线
[maskPath addLineToPoint:CGPointMake(0,0)];
//D点到A点事sin曲线,分为n个点绘制 函数关系式可以自己调整(2*sinf(i+2)+2, i)
for(float i = 0;i<bounds.size.height;i=i+0.01)
{
[maskPath addLineToPoint:CGPointMake(2*sinf(i+2)+2, i)];
}
//封闭,不写也自动封口
[maskPath closePath];
//根据绘制的曲线添加遮罩
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = bounds;
maskLayer.path = maskPath.CGPath;
[self.viewColor.layer addSublayer:maskLayer];
self.viewColor.layer.mask = maskLayer;
}
这样就解决啦!