[iOS]绘制某一边或几边为圆弧的UIView
程序员文章站
2024-03-23 17:46:28
...
[iOS]绘制某一边或几边为圆弧的UIView
拿到如图一这样的需求,需要绘制一个顶部为凹圆弧并能透明操作底部tableview的View。
#import "XZDrawHomeView.h"
@implementation XZDrawHomeView
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// 必须清空背景色,不然绘制出来的区域之外有黑色背景
[self setBackgroundColor:[UIColor clearColor]];
[self setUserInteractionEnabled:NO];
}
return self;
}
- (void)drawRect:(CGRect)rect {
float x = rect.origin.x;
float y = rect.origin.y;
float w = rect.size.width;
float h = rect.size.height;
// 一个不透明类型的Quartz 2D绘画环境,相当于一个画布,你可以在上面任意绘画
CGContextRef context = UIGraphicsGetCurrentContext();
// 画笔线的颜色
CGContextSetRGBStrokeColor(context,1,0,0,0);
// 线的宽度
CGContextSetLineWidth(context, 1.0);
// 填充颜色
UIColor *fullColor = [UIColor whiteColor];
CGContextSetFillColorWithColor(context, fullColor.CGColor);
// 绘制路径
CGContextMoveToPoint(context,x,y);
CGContextAddLineToPoint(context,x,h);
CGContextAddLineToPoint(context,w,h);
CGContextAddLineToPoint(context,w,y);
CGContextAddArcToPoint(context,w/2.0,30,x,y,w*2);
CGContextAddLineToPoint(context,x,y);
// CGContextStrokePath(context);
// 绘制路径加填充
CGContextDrawPath(context, kCGPathFillStroke);
}
@end
示意图:
[图一]
[图二]
不设置背景透明时,会出现黑色背景。
上一篇: python发送带附件邮件
下一篇: m子段和的最大值