iOS CGContextRef 畫一條直線,僅僅是畫一條直線


   今天周末休息,想好好補補課,無奈,弄了一上午,全部都是半邊拉塊的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  

這里面現在僅有我一個人,不過我相信會有更多的博友加入,我們一起進步。

 

北京今天的天氣很涼爽啊,早上沒有開空調,開了風扇,凍得我的小短腿直哆嗦,現在打開窗戶,小風直來呢~加油。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM