日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

iOS开发——高级篇——iOS涂鸦画板效果实现

發(fā)布時(shí)間:2023/12/19 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 iOS开发——高级篇——iOS涂鸦画板效果实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(gè)簡(jiǎn)單的繪圖應(yīng)用,模仿蘋果自帶軟件備忘錄里的涂鴉功能

核心代碼

#import "DrawView.h"

#import "DrawPath.h"

@interface DrawView ()

@property (nonatomic, strong) NSMutableArray *paths;


@property (nonatomic, strong) UIBezierPath *path;


@end


@implementation DrawView

- (void)setImage:(UIImage *)image
{
    _image = image;
    
    [self.paths addObject:image];
    

    [self setNeedsDisplay];
}

// 撤銷
- (void)undo
{
    [self.paths removeLastObject];
    
    [self setNeedsDisplay];
}
- (void)clear
{
    // 清除畫板view所有的路徑,并且重繪
    [self.paths removeAllObjects];
    
    [self setNeedsDisplay];
}

- (void)awakeFromNib
{
    _lineWidth = 1;
    _lineColor = [UIColor blackColor];
}

- (NSMutableArray *)paths
{
    if (_paths == nil) {
        _paths = [NSMutableArray array];
    }
    return _paths;
}

// 當(dāng)手指點(diǎn)擊view,就需要記錄下起始點(diǎn)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // 獲取UITouch
    UITouch *touch = [touches anyObject];
    
    // 獲取起始點(diǎn)
    CGPoint curP = [touch locationInView:self];
    
    // 只要一開始觸摸控件,設(shè)置起始點(diǎn)
    DrawPath *path = [DrawPath path];
    
    path.lineColor = _lineColor;

    [path moveToPoint:curP];

    
    path.lineWidth = _lineWidth;
    
    // 記錄當(dāng)前正在描述的路徑
    _path = path;
    
    // 保存當(dāng)前的路徑
    [self.paths addObject:path];
}

// 每次手指移動(dòng)的時(shí)候調(diào)用
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    // 獲取UITouch
    UITouch *touch = [touches anyObject];
    
    // 獲取當(dāng)前觸摸點(diǎn)
    CGPoint curP = [touch locationInView:self];
    
    [_path addLineToPoint:curP];
    
    // 重繪
    [self setNeedsDisplay];
    
}

// 繪制東西
- (void)drawRect:(CGRect)rect
{
    for (DrawPath *path in self.paths) {
        
        if ([path isKindOfClass:[UIImage class]]) { // 圖片
            UIImage *image = (UIImage *)path;
            
            [image drawAtPoint:CGPointZero];
        }else{
            
            [path.lineColor set];
            
            [path stroke];
        }
    }
}



@end

用法很簡(jiǎn)單,導(dǎo)入DrawView.h DrawView.m 文件創(chuàng)建該控件即可

清屏: [_drawView clear];
撤銷: [_drawView undo];
橡皮擦: _drawView.lineColor = [UIColor whiteColor];

github地址:https://github.com/chglog/scrawl

總結(jié)

以上是生活随笔為你收集整理的iOS开发——高级篇——iOS涂鸦画板效果实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。