分享一个iOS下实现基本绘画板功能的简单方法

燕子畅畅

燕子畅畅

2016-02-19 10:59

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的分享一个iOS下实现基本绘画板功能的简单方法,希望大家看完后能赶快学习起来。

代码部分
TouchView.h
代码如下:

#import UIKit/UIKit.h 
 
@interface TouchView : UIView 

    NSMutableArray *points; 
    NSArray *points_all; 
    CGContextRef context; 
    UIColor *paint_clr; 

@property (strong,nonatomic) NSMutableArray *points; 
@property (strong,nonatomic) NSArray *points_all; 
@property (strong,nonatomic) UIColor *paint_clr; 
 
@end 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

TouchView.m
代码如下:

#import "TouchView.h" 
 
@implementation TouchView 
@synthesize points, points_all, paint_clr; 
 
- (id)initWithFrame:(CGRect)frame 

    self = [super initWithFrame:frame]; 
    if (self) { 
        // Initialization code 
        paint_clr = [UIColor greenColor]; 
    } 
    return self; 

 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect 

    // Drawing code 
    if ((!self.points) || (self.points.count 2)) { 
        return; 
    } 
       
    context = UIGraphicsGetCurrentContext(); 
    //设置画笔粗细  
    CGContextSetLineWidth(context, 5.0f); 
    //设置画笔颜色 
    //[[UIColor blueColor]set ]; 
    // [paint_clr set]; 
    //CGContextSetStrokeColorWithColor(context, [[UIColor blueColor]CGColor]); 
    CGContextSetStrokeColorWithColor(context, [paint_clr CGColor]); 
     
    //画以前的轨迹 
    for (int j = 0 ; j [self.points_all count]; j++) { 
        NSMutableArray *points_tmp = [points_all objectAtIndex:j]; 
             
            for (int i = 0;i [points_tmp count]-1;i++) 
            { 
                CGPoint point1 = [[points_tmp objectAtIndex:i] CGPointValue]; 
                CGPoint point2 = [[points_tmp objectAtIndex:(i+1)] CGPointValue]; 
                CGContextMoveToPoint(context, point1.x, point1.y); 
                CGContextAddLineToPoint(context, point2.x, point2.y); 
                CGContextStrokePath(context); 
            } 
        } 
     
    //画这次 
    for (int i=0; i [self.points count]-1; i++) { 
        CGPoint point1 = [[self.points objectAtIndex:i] CGPointValue]; 
        CGPoint point2 = [[self.points objectAtIndex:(i+1)] CGPointValue]; 
        CGContextMoveToPoint(context, point1.x, point1.y); 
        CGContextAddLineToPoint(context, point2.x, point2.y); 
        CGContextStrokePath(context); 
    }     

 
//不支持多点触摸 
- (BOOL) isMultipleTouchEnabled 

    return NO; 

 
//创建一个array,并且记录初始ponit 
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event 

    self.points = [NSMutableArray array]; 
    CGPoint pt = [[touches anyObject] locationInView:self]; 
    [self.points addObject:[NSValue valueWithCGPoint:pt]]; 

 
//移动过程中记录这些points 
//调用setNeedsDisplay,会触发drawRect方法的调用 
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

    CGPoint pt = [[touches anyObject] locationInView:self]; 
    [self.points addObject:[NSValue valueWithCGPoint:pt]]; 
    [self setNeedsDisplay]; 

 
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

    NSMutableArray *points_tmp = [[NSMutableArray alloc] initWithArray:self.points]; 
    if (self.points_all == nil) { 
        self.points_all = [[NSArray alloc] initWithObjects:points_tmp, nil]; 
    }else { 
        self.points_all = [self.points_all arrayByAddingObject:points_tmp]; 
    } 

@end 

ViewController.h
代码如下:

#import UIKit/UIKit.h 
 
@class TouchView; 
@interface ViewController : UIViewController 

    TouchView *tv; 

@end 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

ViewController.m
代码如下:

#import "ViewController.h" 
#import "TouchView.h" 
 
@interface ViewController () 
 
@end 
 
@implementation ViewController 
 
- (void)viewDidLoad 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.view.userInteractionEnabled = YES; 
     
  // TouchView *tv = [[TouchView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 260.0f, 260.0f)]; 
    tv = [[TouchView alloc]initWithFrame:self.view.frame]; 
    tv.backgroundColor = [UIColor blackColor]; 
     
    [self.view addSubview:tv]; 
     
    UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:[@"White Red Blue Green Yellow" componentsSeparatedByString:@" "]]; 
    seg.segmentedControlStyle = UISegmentedControlSegmentCenter; 
    seg.tintColor = [UIColor blackColor];  
    seg.center = CGPointMake(self.view.center.x, (self.view.bounds.size.height - seg.bounds.size.height));  
    [self.view addSubview:seg]; 
     
    [seg addTarget:self action:@selector(colorChange:) forControlEvents:UIControlEventValueChanged]; 

 
- (void)viewDidUnload 

    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 

 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 

 
- (void) colorChange: (UISegmentedControl *) seg 

    switch ([seg selectedSegmentIndex]) 
    { 
        case 0:  
            tv.paint_clr = [UIColor whiteColor]; 
            break; 
        case 1: 
            tv.paint_clr = [UIColor redColor]; 
            break; 
        case 2: 
            tv.paint_clr = [UIColor blueColor]; 
            break; 
        case 3: 
            tv.paint_clr = [UIColor greenColor]; 
            break; 
        case 4: 
            tv.paint_clr = [UIColor yellowColor]; 
            break; 
        default: 
             
            break; 
    } 

 
@end 

效果图

展开更多 50%)
分享

猜你喜欢

分享一个iOS下实现基本绘画板功能的简单方法

编程语言 网络编程
分享一个iOS下实现基本绘画板功能的简单方法

Illustrator绘制逼真的WACOM绘画板教程

Illustrator CorelDRAW
Illustrator绘制逼真的WACOM绘画板教程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个iOS上的秒表小应用的实现方法分享

编程语言 网络编程
一个iOS上的秒表小应用的实现方法分享

Photoshop简单方法打造一个美丽的花坛

PS PS教程
Photoshop简单方法打造一个美丽的花坛

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

IOS实现简单的进度条功能

编程语言 网络编程
IOS实现简单的进度条功能

iOS开发中最基本的位置功能实现示例

编程语言 网络编程
iOS开发中最基本的位置功能实现示例

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

java 代码中预防空指针异常的处理办法

java 代码中预防空指针异常的处理办法

将网页快捷方式添加到开始屏幕和任务栏上

将网页快捷方式添加到开始屏幕和任务栏上
下拉加载更多内容 ↓