#七彩畫板實現(xiàn)

@property (nonatomic, retain)NSMutableArray *allLinesMutableArray;//用來存儲所有線條的數(shù)組
@property (nonatomic, retain)NSMutableArray *colorMutableArray;//用來存儲所有顏色的數(shù)組
@property (nonatomic, retain)UIButton *eraserButton;//清除橡皮擦
@property (nonatomic, retain)UIButton *allEraseButton;//清除所有的線條的橡皮擦
@end
@implementation PaintView

  • (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
    _eraserButton = [UIButton buttonWithType:UIButtonTypeSystem];
    _eraserButton.frame = CGRectMake(50, 10, 100, 80);
    [_eraserButton setTitle:@"橡皮擦" forState:UIControlStateNormal];
    [_eraserButton addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:_eraserButton];
    _allEraseButton = [UIButton buttonWithType:UIButtonTypeSystem];
    _allEraseButton.frame = CGRectMake(170, 10, 100, 80);
    [_allEraseButton setTitle:@"清除所有" forState:UIControlStateNormal];
    [_allEraseButton addTarget:self action:@selector(btn) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:_allEraseButton];
    }
    return self;
    }
    //畫筆的實現(xiàn)方法
  • (void)btnAction: (UIButton *)sender{
    if (self.allLinesMutableArray.count) {
    [self.allLinesMutableArray removeLastObject];
    [self setNeedsDisplay];
    }
    }
    //清除所有線條按鈕的實現(xiàn)方法
  • (void)btn{
    if (self.allLinesMutableArray.count) {
    [self.allLinesMutableArray removeAllObjects];
    [self setNeedsDisplay];
    }
    }

//線條數(shù)組的懶加載

  • (NSMutableArray *)allLinesMutableArray{
    if (!_allLinesMutableArray) {
    _allLinesMutableArray = [[NSMutableArray alloc]initWithCapacity:2]脓豪;
    }
    return _allLinesMutableArray;
    }
    //顏色數(shù)組的懶加載
  • (NSMutableArray *)colorMutableArray{
    if (!_colorMutableArray) {
    _colorMutableArray = [[NSMutableArray alloc]initWithCapacity:2];
    }
    return _colorMutableArray;
    }
    //觸摸開始
  • (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //得到繪圖的起始點
    //得到觸摸東西
    UITouch *touch = [touches anyObject];
    // 得到起始點
    CGPoint startPoint = [touch locationInView:self.superview];
    // 將起始點存儲到一條線中
    // 先初始化一條貝塞爾曲線
    UIBezierPath *bezierLine = [UIBezierPath bezierPath];
    // 將起始點存儲到線里面
    [bezierLine moveToPoint:startPoint];
    // 將貝塞爾曲線存儲到數(shù)組中,這塊必須使用.語法的形勢扫夜,來給數(shù)組賦值
    [self.allLinesMutableArray addObject:bezierLine];
    // 每新增一條線历谍,就給線條添加對應(yīng)的顏色
    [self.colorMutableArray addObject:RGBA];
    }
    //觸摸開始移動
  • (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    // 手指觸摸移動的時候,才會產(chǎn)生新的點印蔬,將這些所有的點都存儲到貝塞爾曲線中脱衙,才能真正的組成一條線
    UITouch *touch = [touches anyObject];
    // 得到當(dāng)前你在父視圖上的點
    CGPoint locatiPoint = [touch locationInView:self.superview];
    // 取出開始觸摸的方法中初始化好的貝塞爾曲線,因為剛才
    UIBezierPath *bezierLine = self.allLinesMutableArray.lastObject;
    // 將得到的點放到貝塞爾線中
    [bezierLine addLineToPoint:locatiPoint];
    // 重新繪制當(dāng)前界面
    [self setNeedsDisplay];//調(diào)用此方法,系統(tǒng)會觸發(fā)drawRect方法捐韩,重新繪制當(dāng)前界面

}
// 重新繪制當(dāng)前界面

  • (void)drawRect:(CGRect)rect{
    // 設(shè)置畫筆退唠,如果是設(shè)置一種顏色的話,就用這種方法荤胁,如果想多種顏色共存的話瞧预,就是下面的方法
    // [ RGBA setStroke];
    // 開始畫線
    // 遍歷所有的線條。開始繪制
    for (UIBezierPath *line in self.allLinesMutableArray) {

      UIColor *linColor =   [self .colorMutableArray objectAtIndex:[self.allLinesMutableArray indexOfObject:line]];
    

// 設(shè)置每條線的畫筆
[linColor setStroke];
// 設(shè)置線條粗細
[line setLineWidth:30];
// 開始繪制
[line stroke];
}
}
//觸摸被打斷

  • (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

}
//觸摸被打斷

  • (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // [self setNeedsDisplay];
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仅政,一起剝皮案震驚了整個濱河市垢油,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圆丹,老刑警劉巖滩愁,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異硝枉,居然都是意外死亡,警方通過查閱死者的電腦和手機倦微,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門妻味,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人璃诀,你說我怎么就攤上這事弧可。” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵棕诵,是天一觀的道長裁良。 經(jīng)常有香客問我,道長校套,這世上最難降的妖魔是什么价脾? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮笛匙,結(jié)果婚禮上侨把,老公的妹妹穿的比我還像新娘。我一直安慰自己妹孙,他們只是感情好秋柄,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蠢正,像睡著了一般骇笔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚣崭,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天笨触,我揣著相機與錄音,去河邊找鬼雹舀。 笑死芦劣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的说榆。 我是一名探鬼主播虚吟,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼娱俺!你這毒婦竟也來了稍味?” 一聲冷哼從身側(cè)響起废麻,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荠卷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烛愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體油宜,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年怜姿,在試婚紗的時候發(fā)現(xiàn)自己被綠了慎冤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡沧卢,死狀恐怖蚁堤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情但狭,我是刑警寧澤披诗,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布撬即,位于F島的核電站,受9級特大地震影響呈队,放射性物質(zhì)發(fā)生泄漏剥槐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一宪摧、第九天 我趴在偏房一處隱蔽的房頂上張望粒竖。 院中可真熱鬧,春花似錦几于、人聲如沸蕊苗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岁歉。三九已至,卻和暖如春膝蜈,著一層夾襖步出監(jiān)牢的瞬間锅移,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工饱搏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留非剃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓推沸,卻偏偏與公主長得像备绽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鬓催,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容