念茜的博客

我是一单线程妞儿

iOS应用开发——小画板Demo

     还有很多功能可以加,记在这里留着慢慢加吧。


代码部分

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


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


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


效果图










阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yiyaaixuexi/article/details/7407851
想对作者说点什么? 我来说一句

iOS 画板,手写签名

2016年01月21日 37KB 下载

ios画板源码

2017年10月30日 4.62MB 下载

iOS屏幕录制DEMO

2016年11月08日 54KB 下载

画板java

2014年08月14日 11KB 下载

没有更多推荐了,返回首页

不良信息举报

iOS应用开发——小画板Demo

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭