手机
当前位置:查字典教程网 >编程开发 >IOS开发 >分享一个iOS下实现基本绘画板功能的简单方法
分享一个iOS下实现基本绘画板功能的简单方法
摘要:代码部分TouchView.h复制代码代码如下:#import@interfaceTouchView:UIView{NSMutableArr...

代码部分

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

效果图

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

【分享一个iOS下实现基本绘画板功能的简单方法】相关文章:

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

IOS绘制虚线的方法总结

iOS实现压缩图片上传功能

判断iOS应用是否开放HTTP权限的方法

iOS实现简易抽屉效果、双边抽屉效果

浅析iOS给图片加水印的方法

iOS中定位当前位置坐标及转换为火星坐标的方法

IOS实现视频动画效果的启动图

iOS实现左右拖动抽屉效果

解决JSON数据因为null导致数据加载失败的方法

精品推荐
分类导航