美文网首页
iOS 利用drawRect方法使用CGContextRef绘制

iOS 利用drawRect方法使用CGContextRef绘制

作者: eden_lx | 来源:发表于2022-06-10 10:27 被阅读0次

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

    - (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绘制

          本文链接:https://www.haomeiwen.com/subject/nzovmrtx.html