带箭头的UIView

  在网上查资料的时候,看到带箭头的UIView的箭头都是直的,显得很没有平滑感,恰好当时正在写高德地图,高德地图中有一个气泡就是画的,正好拿来用一用!本来参考高德地图的气泡写过一个,不小心将代码遗失去,后来参考:http://www.jianshu.com/p/0c609bf5cb6f

下面是经过改变路径后的代码:

- (void)drawRect:(CGRect)rect {

        //默认圆角角度

         float    r =4;

       //居中偏移量(箭头高度)

       float      offset =5;

       //设置箭头位置

       float       positionNum =20;

       //设置画线长宽

        float        w =self.frame.size.width;

        float         h =self.frame.size.height;

        //获取文本

        CGContextRefcontext =UIGraphicsGetCurrentContext();

         //设置边线宽度

         CGContextSetLineWidth(context,0.2);

         //边框颜色

         CGContextSetStrokeColorWithColor(context, [UIColorgrayColor].CGColor); 

         //矩形填充颜色

          CGContextSetFillColorWithColor(context, [UIColor     blueColor].CGColor);

          CGContextMoveToPoint(context,0, h);

         CGContextAddLineToPoint(context, w, h);//向右划线

         CGContextAddLineToPoint(context, w, offset);//向右上角划线

         CGContextAddLineToPoint(context, positionNum +20, offset);//向左划线

         CGContextAddArcToPoint(context, positionNum +10,0, positionNum, offset, r);//向             左上划曲线

         CGContextAddArcToPoint(context, positionNum, offset,0, offset, r);//向左下划曲线

         CGContextAddLineToPoint(context,0, offset);//向左顶点划                                 

         CGContextDrawPath(context,kCGPathFillStroke);//根据坐标绘制路径

        /**父类调用放在画完边线后.不然设置的文字会被覆盖*/

         [super   drawRect:rect];

 }

你可能感兴趣的:(带箭头的UIView)