斯坦福iOS7公開課7-9筆記及演示Demo

   這一部分主要介紹了iOS的繪圖、手勢、協議、block、力學特效動畫(包括重力、碰撞、吸附等)以及自動佈局的內容。函數

一、繪圖、手勢

    (1)調用一個自定義的UIView時,可使用awakeFromNib方法作一些初始化工做。佈局

    

    (2)iOS中繪圖須要瞭解的經常使用測量單位:動畫

     CGFloat:浮點值,與float同樣;ui

     CGPoint、CGSize、CGRect是三個結構體分別表明遊XY座標描述的店、寬度高度描述的大小值以及由原點座標、寬度高度描述的矩形,度量單位都是CGFloat。spa

     

    (3)自定義的UIView實現文件中有一個drawRect方法,給咱們提供了從新繪製UIView的入口,經過重寫這個方法來更新咱們的UIView,可是蘋果要求開發者使用setNeedsDisplay這個方法去通知系統調用drawRect進行重繪,而不是直接調用。3d

    

    (4)iOS給開發者提供了UIBezierPath類,實現經過直線或曲線等方式構造繪製圖形代理

    (5)繪製圖形時的座標系參考,原點是在左上角,bounds指View自己矩形所組成的座標系,frame指View外包矩形組成的座標系,center座標指View的中心點在父視圖座標系中的座標值。指針

      

    (6)手勢,系統已經對手勢進行了封裝,能夠直接使用,兩種使用方法:code

          一種是添加手勢到Interface Builder中,而後將其鏈接到實現文件中,對手勢進行處理。對象

     還有一種方法是在代碼中直接添加,提早(好比在ViewDidLoad中)addGestureRecognizer,指明手勢響應函數,實現函數方法。

     

     

    (7)對於手勢的狀態,首先分爲不連續手勢和連續手勢,不連續手勢好比點擊手勢Tap,只有一種狀態Recognized,表明接觸屏幕那一刻被識別到了。對於不連續手勢,好比捏合縮放手勢pinch,手勢進行的過程當中有Began、Failed、Changed、Cancelled狀態。這些狀態對實現手勢處理方法很關鍵,當手勢已經開始執行了,須要對手勢進行處理就是在changed狀態下進行,一些特殊狀況,例如當使用手勢時有電話進來,這時會進入Cancelled狀態。

二、協議、Block、力學特效動畫

     (1)協議,iOS針對不一樣對象提供了特定的方法,固然若是想使用這些方法,還須要按照規定格式聲明一下,有點相似於接口的做用,預先提供了一些接口方便開發者使用,指定代理delegate,讓代理者來實現協議中所提供的方法,好比Demo中使用了UIDynamicAnimatorDelegate這個協議提供的dynamicAnimatorDidPause方法(力學行爲中斷中止時觸發),並在裏面調用了自定義的方法,用來實現物體滿一行後消失的效果。

      

     

     固然,也能夠根據須要自定義協議,好比兩個頁面之間跳轉,尤爲是須要頁面跳轉傳值時,還能夠把值做爲協議方法裏的參數進行傳遞。

     

     

     (2)Block,代碼塊,有點相似C#的匿名函數。

       

      使用block時須要注意retain cycle的問題,好比Demo中的一個block,因爲在內部直接使用self,會形成block與self之間互相都有一個strong指針指向對方,形成兩者都不能銷燬,因此須要經過弱引用weakSelf來代替self。

      

     (3)視圖動畫,iOS提供了一些封裝好的視圖動畫效果供開發者直接使用。

     (4)力學特效動畫,iOS中也已經封裝好了許多效果,Demo中用到了重力、碰撞、吸附效果,使用方法以下:

        首先建立一個用於動畫執行的容器UIDynamicAnimator,其中ReferenceView表明在那個view中進行動畫,至關於物理學中的力學參考系。

      

      在對具體的力學特效進行描述,指定是哪種行爲,

      

     指定執行動畫效果的對象(這裏的dropBehavior是組合了重力和碰撞效果的行爲)

     

三、自動佈局

    Xcode中提供了自動佈局機制,對一些簡單界面,加入一些約束條件就能處理不一樣尺寸、屏幕旋轉後的界面顯示效果。

    

    使用自動佈局(已經加了約束條件)先後效果截圖:

        

    Demo效果截圖,下載地址:http://files.cnblogs.com/colinhou/Dropit.zip

    

相關文章
相關標籤/搜索