其实就是用贝塞尔曲线画出来的
- (void)drawRect:(CGRect)rect{
[super drawRect:rect];
CGFloat minX = CGRectGetMinX(rect);
CGFloat minY = CGRectGetMinY(rect);
CGFloat maxX = CGRectGetMaxX(rect);
CGFloat maxY = CGRectGetMaxY(rect);
CGFloat topLeftCorner = 10;
CGFloat topRightCorner = 20;
CGFloat bottomLeftCorner = 30;
CGFloat bottomRightCorner = 60;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(minX, minY + topLeftCorner)];
[path addQuadCurveToPoint:CGPointMake(minX + topLeftCorner, minY) controlPoint:CGPointMake(minX, minY)];
[path addLineToPoint:CGPointMake(maxX - topRightCorner , minY)];
[path addQuadCurveToPoint:CGPointMake(maxX, minY + topRightCorner) controlPoint:CGPointMake(maxX, minY)];
[path addLineToPoint:CGPointMake(maxX ,maxY - bottomRightCorner)];
[path addQuadCurveToPoint:CGPointMake(maxX - bottomRightCorner, maxY) controlPoint:CGPointMake(maxX, maxY)];
[path addLineToPoint:CGPointMake(minX + bottomLeftCorner, maxY)];
[path addQuadCurveToPoint:CGPointMake(minX, maxY - bottomLeftCorner) controlPoint:CGPointMake(minX, maxY)];
[path closePath];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.fillColor = [UIColor orangeColor].CGColor;
shapeLayer.path = path.CGPath;
NSArray *colors = @[(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor redColor].CGColor];
CAGradientLayer * gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = rect;
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1, 1);
gradientLayer.colors = colors;
[self.layer addSublayer:gradientLayer];
gradientLayer.mask = shapeLayer;
}