自己定义UIView以实现自绘

有时候我们须要自绘uiview以实现自己的需求,比方依据坐标点绘制出连续的曲线(股票走势图),就须要自绘uiview了。

原理:继承uiview类(customView),并实现custom view的drawRect即可。

首先看一下效果图:


代码例如以下:

// .h

#import <UIKit/UIKit.h>


@interface CustomView : UIView

@end


//.m

#import "CustomView.h"


@implementation CustomView


-(id)initWithFrame:(CGRect)frame{

    //重写initWithFrame时,不要忘了以下一句

    self = [superinitWithFrame:frame];

    

    if (self) {

        self.backgroundColor = [UIColorwhiteColor];

    }

    

    return self;

}


//重写drawRect方法(不须要调用)。绘制想要的图像

-(void)drawRect:(CGRect)rect{

 

    CGContextRef context = UIGraphicsGetCurrentContext();//context:一块内存区域。将它看做当前view的画布即可了。


    NSDictionary *attribute = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize: 15.0f], NSFontAttributeName, [UIColor redColor],  NSForegroundColorAttributeName, nil];

    [@"股市走势图" drawInRect:CGRectMake(100, 200, 80, 20) withAttributes:attribute] ;//绘画标题

    

    //曲线

    CGContextMoveToPoint(context, 10, 400);

    CGContextAddLineToPoint(context, 100, 450);

    CGContextAddLineToPoint(context, 150, 400);

    CGContextAddLineToPoint(context, 200, 450);

    //CGContextStrokePath(context);

    

    //三角形

    CGContextMoveToPoint(context, 20, 100);

    CGContextAddLineToPoint(context, 40, 300);

    CGContextAddLineToPoint(context, 200, 200);

    CGContextClosePath(context);

    CGContextStrokePath(context);

    //CGContextFillPath(context);

    

    //矩形

    CGContextAddRect(context, CGRectMake(20, 20, 100, 50));

    [[UIColor colorWithRed:1 green:0 blue:0 alpha:1] set];

    //CGContextStrokePath(context);//空心

    CGContextFillPath(context);//实心

    

     //

    CGContextAddArc(context, 150, 150, 100, 0, 2*M_PI, 0);

    CGContextStrokePath(context);

}


@end


然后在须要用到该view的view controller的

viewDidLoad下加入西;以下代码就能够了!

CustomView *view = [[CustomView alloc]  initWithFrame:[UIScreen mainScreen].bounds];

[self.view addSubview view];


posted on 2018-01-28 19:58  yjbjingcha  阅读(154)  评论(0编辑  收藏  举报

导航