iOS 利用drawRect方法使用CGContextRef绘制带箭头的气泡view

很简单的一份代码,相信各位吴彦祖以及梁朝伟都会只是会有点浪费时间,废话不多说,上代码。

- (void)drawRect:(CGRect)rect {
    // Drawing code
    
    CGSize arrowSize = CGSizeMake(10, 10);
    CGFloat cornerRadius = 4;// 圆角角度
    
    CGFloat selfWidth = rect.size.width;
    CGFloat selfHeight = rect.size.height;
    
    
    // 获取上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 矩形填充颜色
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    
    CGContextMoveToPoint(context, cornerRadius, 0);
    
    
    CGFloat rightContetMaxX = selfWidth - arrowSize.width;
    CGContextAddArcToPoint(context, rightContetMaxX, 0, rightContetMaxX, selfHeight/2 - arrowSize.height/2, cornerRadius);
    
    
    CGContextAddLineToPoint(context, rightContetMaxX, selfHeight/2 - arrowSize.height/2);
    CGContextAddArcToPoint(context, selfWidth, selfHeight/2, rightContetMaxX, selfHeight/2 + arrowSize.height/2, 2);
    
    CGContextAddArcToPoint(context, rightContetMaxX, selfHeight/2 + arrowSize.height/2, rightContetMaxX, selfHeight, 2);
    
    CGContextAddArcToPoint(context, rightContetMaxX, selfHeight, 0, selfHeight, cornerRadius);
    CGContextAddArcToPoint(context, 0, selfHeight, 0, selfHeight - cornerRadius, cornerRadius);
    CGContextAddArcToPoint(context, 0, 0, cornerRadius, 0, cornerRadius);
    
    CGContextDrawPath(context, kCGPathFill);
    // 必须要在调用super之前绘制完成否则会出现当前view中的文字无法显示问题。
    [super drawRect:rect];
}

simulator_screenshot_2C49A3B5-B9AA-47E6-99DC-4D5C98BA1032.png

你可能感兴趣的:(iOS 利用drawRect方法使用CGContextRef绘制带箭头的气泡view)