天天看點

iOS開發UI篇—Quartz2D簡單使用(三)

一、通過slider控制圓的縮放

1.實作過程

建立一個項目,建立一個繼承自uiview的類,并和storyboard中自定義的view進行關聯。

界面搭建,如圖:

代碼示例:

yyviewcontroller.m檔案

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

yyview.h檔案

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

yyview.m檔案

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

效果:

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

2.注意點:

drawrect:方法不能由我們自己手動調用,隻能由系統來調用。

drawrect:調用的時機:當第一次顯示或者一個重繪事件發生時調用。

setneedsdisplay方法:重新繪制,調用這個方法就會通知自定義的view重新繪制畫面,調用drawrect:。

提示:當一個view從xib或storyboard建立出來時,會調用awakefromnib方法。

3.補充

iOS開發UI篇—Quartz2D簡單使用(三)

可以通過slider的value屬性監聽值的改變,當然也可以指定value的取值範圍(這裡設定為0~100)。

二、刷幀效果

說明:把雪花狀的圖檔繪制到view上,實作圖檔在視圖中下落的效果。

1.實作代碼:

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

實作效果

iOS開發UI篇—Quartz2D簡單使用(三)
iOS開發UI篇—Quartz2D簡單使用(三)

2.重要說明

(1)下面兩個方法的調用順序

-(void)awakefromnib

-(id)initwithcoder:(nscoder *)adecoder

提示:如果view是從xib或storyboard中建立可以調用awakefromnib方法,歸檔。從檔案建立view,其實會先調用initwithcoder這個方法。xib和storyboard也是檔案。

上面兩個方法,-(id)initwithcoder:(nscoder *)adecoder會先調用。實作該方法需要實作nscoding協定,由于建立的uiview預設就已經實作了該協定。

可以進入到頭檔案檢視:

iOS開發UI篇—Quartz2D簡單使用(三)

運作建立的程式,通過列印可以驗證上面兩個方法的調用順序。

iOS開發UI篇—Quartz2D簡單使用(三)

(2)兩個定時器

第一個:

[nstimer scheduledtimerwithtimeinterval:0.1 target:self selector:@selector(updateimage) userinfo:nil repeats:yes];

說明: nstimer一般用于定時的更新一些非界面上的資料,告訴多久調用一次

第二個:

cadisplaylink *display= [cadisplaylink displaylinkwithtarget:self selector:@selector(updateimage)];

[display addtorunloop:[nsrunloopmainrunloop] formode:nsdefaultrunloopmode];

  說明: cadisplaylink刷幀,預設每秒重新整理60次。該定時器建立之後,預設是不會執行的,需要把它加載到消息循環中

繼續閱讀