//
// DrawboardView.m
// 畫板畫圖
//
// Created by 品德信息 on 2017/4/17.
// Copyright ? 2017年 品德信息. All rights reserved.
//
#import "DrawboardView.h"
@interface DrawboardView ()
//is use eraser 使用橡皮擦
@property (nonatomic, assign) BOOL isEraserEnabled;
//pan color set
@property (nonatomic, strong) UIColor *panColor;
//pan line width
@property (nonatomic, assign) CGFloat panLineWidth;
@property (nonatomic, assign) CGFloat eraserLineWidth;
@property (nonatomic, strong) CAShapeLayer *currentDrawLayer;
@property (nonatomic, strong) UIBezierPath *currentDrawPath;
@property (nonatomic, strong) NSMutableArray *drawLayerArray;
@end
@implementation DrawboardView
//FIXME: MARK --lief cycle ---
- (instancetype)init {
if (self = [super init]) {
self.backgroundColor = [UIColor whiteColor];
self.isEraserEnabled = false;
self.panColor = [UIColor blackColor];
self.panLineWidth = 2.f;
self.eraserLineWidth = 10.f;
}
return self;
}
-(instancetype)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor whiteColor];
self.isEraserEnabled = false;
self.panColor = [UIColor blackColor];
self.panLineWidth = 2.f;
self.eraserLineWidth = 10.f;
}
return self;
}
- (void)dealloc{
[self releaseAllLayers];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
UITouch *touch = touches.anyObject;
CGPoint startPoint = [touch locationInView: self];
self.currentDrawLayer = [self makeDrawLayer:self.isEraserEnabled];
self.currentDrawPath = [self makeDrawPath];
[self.currentDrawPath moveToPoint:startPoint];
}
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
UITouch *touch = touches.anyObject;
CGPoint currentPoint = [touch locationInView:self];
[self.currentDrawPath addLineToPoint:currentPoint];
self.currentDrawLayer.path = self.currentDrawPath.CGPath;
}
-(NSMutableArray *)drawLayerArray {
if (!_drawLayerArray) {
_drawLayerArray = [NSMutableArray arrayWithCapacity:10];
}
return _drawLayerArray;
}
#pragma mark -- Custom Methods --
-(CAShapeLayer *)makeDrawLayer:(BOOL)isEraserEnable {
CAShapeLayer *drawLayer = [CAShapeLayer layer];
drawLayer.frame = self.bounds;
drawLayer.fillColor = [UIColor clearColor].CGColor;
//擦除
if (!isEraserEnable) {
drawLayer.lineWidth = self.panLineWidth;
drawLayer.strokeColor = self.panColor.CGColor;
}else{
drawLayer.lineWidth = self.eraserLineWidth;
drawLayer.strokeColor = self.backgroundColor.CGColor;
}
[self.layer insertSublayer:drawLayer atIndex:(unsigned)self.drawLayerArray.count];
[self.drawLayerArray addObject:drawLayer];
return drawLayer;
}
-(UIBezierPath *)makeDrawPath{
UIBezierPath *drawPath = [UIBezierPath bezierPath];
drawPath.lineCapStyle = kCGLineCapRound;
drawPath.lineJoinStyle = kCGLineJoinRound;
return drawPath;
}
- (void)releaseAllLayers {
[self.drawLayerArray makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
[self.drawLayerArray removeAllObjects];
}
@end
畫板畫圖
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晨抡,“玉大人氛悬,你說我怎么就攤上這事≡胖” “怎么了如捅?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長调煎。 經(jīng)常有香客問我镜遣,道長,這世上最難降的妖魔是什么士袄? 我笑而不...
- 正文 為了忘掉前任烈涮,我火速辦了婚禮,結(jié)果婚禮上窖剑,老公的妹妹穿的比我還像新娘。我一直安慰自己戈稿,他們只是感情好西土,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞍盗,像睡著了一般需了。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上般甲,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涮俄!你這毒婦竟也來了蛉拙?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布徽级,位于F島的核電站气破,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏餐抢。R本人自食惡果不足惜现使,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旷痕。 院中可真熱鬧碳锈,春花似錦、人聲如沸欺抗。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽绞呈。三九已至贸人,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佃声,已是汗流浹背艺智。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 為什么管理人員都喜歡用Visio畫圖?其實有原因的: 在這里铛只,我歸納為以下幾點: 形狀數(shù)據(jù)一體化埠胖,這是管理者最喜歡...
- 剛剛過去了春節(jié)糠溜,接下來接踵而來婦女節(jié),勞動節(jié)直撤,端午節(jié)非竿,中秋節(jié),國慶節(jié)谋竖。红柱。。對的蓖乘,你總要發(fā)各種節(jié)日圖片锤悄,員工生日...
- 最通俗易懂的表達(dá)方式 文字需要翻譯零聚,圖片不用。在圖片的世界些侍,不管是中國人隶症、印度人、美國人岗宣、英國人的笑蚂会,全世界人都能...
- 在工作中胁住,我們經(jīng)常會記筆記或者頭腦風(fēng)暴,但是大多數(shù)人的筆記都是密密麻麻的字纽什,會議過后完全記不清哪里是重點,即便是創(chuàng)...
- 為了回饋北京消費者對西鳳酒長期以來的關(guān)愛躲叼,在五一勞動節(jié)到來之際芦缰,北京糖業(yè)煙酒有限公司從即日起到5月31日前購買西鳳...