少说废话直接上代码
CGSize size = view.bounds.size;
UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 1);
CGContextSetStrokeColorWithColor(contextRef, [UIColor clearColor].CGColor);
CGContextSetFillColorWithColor(contextRef, view.backgroundColor.CGColor);
view.backgroundColor = [UIColor clearColor];
CGFloat halfBorderWidth = 1 / 2.0;
CGFloat width = size.width;
CGFloat height = size.height;
CGContextMoveToPoint(contextRef, width - halfBorderWidth, radius + halfBorderWidth);
if (corner == UIRectCornerAllCorners) {
CGContextAddArcToPoint(contextRef, width - halfBorderWidth, height - halfBorderWidth, width - radius - halfBorderWidth, height - halfBorderWidth, radius); // 右下角角度
CGContextAddArcToPoint(contextRef, halfBorderWidth, height - halfBorderWidth, halfBorderWidth, height - radius - halfBorderWidth, radius); // 左下角角度
CGContextAddArcToPoint(contextRef, halfBorderWidth, halfBorderWidth, width - halfBorderWidth, halfBorderWidth, radius); // 左上角
CGContextAddArcToPoint(contextRef, width - halfBorderWidth, halfBorderWidth, width - halfBorderWidth, radius + halfBorderWidth, radius); // 右上角
}
else {
if (corner & UIRectCornerBottomRight) {
CGContextAddArcToPoint(contextRef, width - halfBorderWidth, height - halfBorderWidth, width - radius - halfBorderWidth, height - halfBorderWidth, radius); // 右下角角度
CGContextMoveToPoint(contextRef, width - radius - halfBorderWidth, height - halfBorderWidth);
}
else {
CGContextAddLineToPoint(contextRef, width - halfBorderWidth, height - halfBorderWidth); // 右下角角度
}
if (corner & UIRectCornerBottomLeft) {
CGContextAddArcToPoint(contextRef, halfBorderWidth, height - halfBorderWidth, halfBorderWidth, height - radius - halfBorderWidth, radius); // 左下角角度
CGContextMoveToPoint(contextRef, halfBorderWidth, height - radius - halfBorderWidth);
}
else {
CGContextAddLineToPoint(contextRef, halfBorderWidth, height - halfBorderWidth); // 左下角角度
}
if (corner & UIRectCornerTopLeft) {
CGContextAddArcToPoint(contextRef, halfBorderWidth, halfBorderWidth, width - halfBorderWidth, halfBorderWidth, radius); // 左上角
CGContextAddLineToPoint(contextRef, width - halfBorderWidth, halfBorderWidth);
}
else {
CGContextAddLineToPoint(contextRef, halfBorderWidth, halfBorderWidth); // 左上角
}
if (corner & UIRectCornerTopRight) {
CGContextAddArcToPoint(contextRef, width - halfBorderWidth, halfBorderWidth, width - halfBorderWidth, radius + halfBorderWidth, radius); // 右上角
CGContextAddLineToPoint(contextRef, width - halfBorderWidth, radius + halfBorderWidth);
}
else {
CGContextAddLineToPoint(contextRef, width - halfBorderWidth, halfBorderWidth); // 右上角
}
CGContextAddLineToPoint(contextRef, width - halfBorderWidth, radius + halfBorderWidth);
}
CGContextDrawPath(contextRef, kCGPathFillStroke);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[view viewWithTag:1999999] removeFromSuperview];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
imageView.frame = view.frame;
imageView.tag = 1999999;
[view insertSubview:imageView atIndex:0];
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)