標籤:
繪製:
建立DrawView,繼承UIView (用C來寫) (OC用[]調用,C直接調用,參數放後面)
在ViewController裡用代碼寫的話,會執行此方法;直接在Storyboardl 裡把View的Class設定為DrawView的話不執行initWithFrame方法,執行initWithCode 轉下
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
}
return self;
}
//當通過sb或xib建立控制項的時候會調用此 初始化方法
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
self.points = [NSMutableArray array];
}
return self;
}
//此方法第一次顯示出來的時候,會自動調用一次,之後每次執行setNeeddisplay(設定需要顯示)方法的時候會執行
//設定畫筆來畫線
-(void)drawRect:(CGRect)rect{
//擷取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//設直線的顏色
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
//把畫筆移到某一位置
CGContextMoveToPoint(context, 20, 200);
//添加一條線到某點
CGContextAddLineToPoint(context, 120, 300);
CGContextAddLineToPoint(context, 220, 100);
//繪製
CGContextDrawPath(context , kCGPathStroke);
}
//設定畫筆來畫線
-(void)drawRect:(CGRect)rect{
//擷取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//設直線的顏色
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);
for (int i; i<self.points.count; i++) { //遍曆每一個點
CGPoint p = [self.points[i] CGPointValue];
if (i ==0) {
CGContextMoveToPoint(context, p.x, p.y); //把畫筆移到某點
}else{
CGContextAddLineToPoint(context, p.x, p.y); //添加一條線到某點
}
}
//繪製
CGContextDrawPath(context , kCGPathStroke);
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *t = [touches anyObject];
CGPoint p = [t locationInView:self];
[self.points addObject:[NSValue valueWithCGPoint:p]];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *t = [touches anyObject];
CGPoint p = [t locationInView:self];
[self.points addObject:[NSValue valueWithCGPoint:p]];
[self setNeedsDisplay];
}
藍懿教育 繪製