標籤:
今天周末休息,想好好補補課,無奈,弄了一上午,全部都是半邊拉塊的demo,有一種深深的挫敗感。
中午睡醒一覺後,又看了一集“奔跑吧兄弟”,然後一下午時間就過去了。
仔細一想,應該是我的補課方法不對:要補的東西太多了,必須得從大處入手,如果從小處入手,那得花老鼻子的時間來弄了。
然後,那就從困擾了好久的畫線開始吧。
前兩天做項目,頭兒讓我用畫線實現一個功能,他一說畫線我就打怵,因為對這一方面不是很熟,這幾天鼓搗了幾下子,但是每次都是做著做著這個,又發現了另外一個不會的東東,轉戰去其他戰場了,等反應過來時,時間已經過去了,畫線這個功能還是沒有解決,深深的挫敗感又襲了一身,也沒有心情弄了,遂洗洗就去睡了,第二天周而復始。
現在發現了自己的戰略不對,所以要及時改正啊!
下面就好好總結一下畫線的基本功,如果其他博友看到,說不準也能指點迷津了!
寫在前面:
1.首先必須知道:如果要畫線,則必須在drawRect方法裡面寫,也就是要重寫這個方法。
2.必須知道內容相關的意思,我認為的就是拿到當前view的畫布。
這幾個地方明了了,就不難了。
1.首先,應該建立一個project
2.在project裡面,建立一個繼承於UIView的view,我們定義為LineView;
3.重寫init方法
3.1 在這個裡面,我們要定義一下當前view的backgroundColor,因為預設是黑色,我們將之設定為白色。
-(instancetype)init{
if (self = [super init]) {
self.backgroundColor = [UIColor whiteColor];
}
return self;
}
4.重寫drawRect 方法
4.1 要畫一條線,我們必須得先設定好畫布
CGContextRef context = UIGraphicsGetCurrentContext();
4.2 設定這條線的起點和終點:我們從螢幕的左上方--螢幕的右下角
CGContextMoveToPoint(context, 0, 0);//先確立一個開始的點
CGContextAddLineToPoint(context, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height);//設定終點。如果多於兩個點時,可以重複調用這個方法,就會有多個折線
前面的context代表的是基於當前的畫布,後面的兩個參數,代表當前點的座標。
4.3 設定當前線的寬度
CGContextSetLineWidth(context, 5.0);//後面的數值越大,線越粗
4.4 設定當前線的顏色
CGFloat components[] = {221.0/255,221.0/255,221.0/255,1.0f};
CGContextSetStrokeColor(context, components);
components就是用
[UIColor colorWithRed:<#(CGFloat)#> green:<#(CGFloat)#> blue:<#(CGFloat)#> alpha:<#(CGFloat)#>]
將這個方法分離出來,分別填入數組內,範圍是從0.0-1.0,不可以越界。
4.5 串連這兩個點
CGContextStrokePath(context);
這樣,這條簡單的直線就畫完了。
但這樣還是不夠,因為我們還沒有將它貼在ViewController裡面。
在ViewController.m中的viewDidLoad方法裡面,我們將它添加進去:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
LineView * lineView = [[LineView alloc]init];
lineView.frame = self.view.bounds;
[self.view addSubview:lineView];
}
運行程式,這條淡灰色的線就粗來了~~~功能雖然簡單,但是,能完整的寫出來,也算有一種小小的成就感了。當然,這隻是一個小小的開始,更複雜的任務,還在後面等著我們呢!
剛才建立了一個群:iOS進階學習交流群
QQ群號:461093715
這裡面現在僅有我一個人,不過我相信會有更多的博友加入,我們一起進步。
北京今天的天氣很涼爽啊,早上沒有開空調,開了風扇,凍得我的小短腿直哆嗦,現在開啟窗戶,小風直來呢~加油。
iOS CGContextRef 畫一條直線,僅僅是畫一條直線