在ios中開(kāi)發(fā)實(shí)現(xiàn)畫板功能的方法分析
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
最近看了一些網(wǎng)上的畫板demo,這些demo的實(shí)現(xiàn)方式基本上是使用CGContextRef或者UIBezierPath實(shí)現(xiàn),但是基本上都存在一個(gè)比較嚴(yán)重的bug,在使用擦除功能的時(shí)候基本上都是直接將畫板的顏色改為背景的顏色,那么當(dāng)背景的是一張圖片或者背景并不是單一顏色而是多種顏色時(shí),擦除功能就會(huì)失效。本demo文章將解決這樣一個(gè)問(wèn)題。按照國(guó)際慣例先上圖。
demo主要使用CGContextRef實(shí)現(xiàn),擦除功能使用kCGBlendModeDestinationIn和clearColor聯(lián)合使用實(shí)現(xiàn)。
1、新建DWStroke類存儲(chǔ)CGContextRef信息
DWStroke.h
#import 《UIKit/UIKit.h》
typedef struct CGPath *CGMutablePathRef;
typedef enum CGBlendMode CGBlendMode;
@interface DWStroke : NSObject
@property (nonatomic) CGMutablePathRef path;
@property (nonatomic, assign) CGBlendMode blendMode;
@property (nonatomic, assign) CGFloat strokeWidth;
@property (nonatomic, strong) UIColor *lineColor;
- (void)strokeWithContext:(CGContextRef)context;
@end
DWStroke.m
- (void)strokeWithContext:(CGContextRef)context {
CGContextSetStrokeColorWithColor(context, [_lineColor CGColor]);
CGContextSetLineWidth(context, _strokeWidth);
CGContextSetBlendMode(context, _blendMode);
CGContextBeginPath(context);
CGContextAddPath(context, _path);
CGContextStrokePath(context);
}
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
在ios中開(kāi)發(fā)實(shí)現(xiàn)畫板功能的方法分析下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問(wèn)題? 377
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬(wàn)部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過(guò)熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開(kāi)源BIOS固件版本 448