麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-14 20:14:07
字體:
供稿:網(wǎng)友

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

1、繪圖、手勢

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

    

    (2)iOS中繪圖需要了解的常用測量單位:

     CGFloat:浮點值,與float一樣;

     CGPoint、CGSize、CGRect是三個結(jié)構(gòu)體分別代表游XY坐標描述的店、寬度高度描述的大小值以及由原點坐標、寬度高度描述的矩形,度量單位都是CGFloat。

     

    (3)自定義的UIView實現(xiàn)文件中有一個drawRect方法,給我們提供了重新繪制UIView的入口,通過重寫這個方法來更新我們的UIView,但是蘋果要求開發(fā)者使用setNeedsDisplay這個方法去通知系統(tǒng)調(diào)用drawRect進行重繪,而不是直接調(diào)用。

    

    (4)iOS給開發(fā)者提供了UIBezierPath類,實現(xiàn)通過直線或曲線等方式構(gòu)造繪制圖形

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

      

    (6)手勢,系統(tǒng)已經(jīng)對手勢進行了封裝,可以直接使用,兩種使用方法:

          一種是添加手勢到Interface Builder中,然后將其連接到實現(xiàn)文件中,對手勢進行處理。

     還有一種方法是在代碼中直接添加,提前(比如在ViewDidLoad中)addGestureRecognizer,指明手勢響應(yīng)函數(shù),實現(xiàn)函數(shù)方法。

     

     

    (7)對于手勢的狀態(tài),首先分為不連續(xù)手勢和連續(xù)手勢,不連續(xù)手勢比如點擊手勢Tap,只有一種狀態(tài)Recognized,代表接觸屏幕那一刻被識別到了。對于不連續(xù)手勢,比如捏合縮放手勢pinch,手勢進行的過程中有Began、Failed、Changed、Cancelled狀態(tài)。這些狀態(tài)對實現(xiàn)手勢處理方法很關(guān)鍵,當(dāng)手勢已經(jīng)開始執(zhí)行了,需要對手勢進行處理就是在changed狀態(tài)下進行,一些特殊情況,例如當(dāng)使用手勢時有電話進來,這時會進入Cancelled狀態(tài)。

2、協(xié)議、Block、力學(xué)特效動畫

     (1)協(xié)議,iOS針對不同對象提供了特定的方法,當(dāng)然如果想使用這些方法,還需要按照規(guī)定格式聲明一下,有點類似于接口的作用,預(yù)先提供了一些接口方便開發(fā)者使用,指定代理delegate,讓代理者來實現(xiàn)協(xié)議中所提供的方法,比如Demo中使用了UIDynamicAnimatorDelegate這個協(xié)議提供的dynamicAnimatorDidPause方法(力學(xué)行為中斷停止時觸發(fā)),并在里面調(diào)用了自定義的方法,用來實現(xiàn)物體滿一行后消失的效果。

      

     

     當(dāng)然,也可以根據(jù)需要自定義協(xié)議,比如兩個頁面之間跳轉(zhuǎn),尤其是需要頁面跳轉(zhuǎn)傳值時,還可以把值作為協(xié)議方法里的參數(shù)進行傳遞。

     

     

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

       

      使用block時需要注意retain cycle的問題,比如Demo中的一個block,由于在內(nèi)部直接使用self,會造成block與self之間互相都有一個strong指針指向?qū)Ψ剑斐啥叨疾荒茕N毀,所以需要通過弱引用weakSelf來代替self。

      

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

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

        首先創(chuàng)建一個用于動畫執(zhí)行的容器UIDynamicAnimator,其中ReferenceView代表在那個view中進行動畫,相當(dāng)于物理學(xué)中的力學(xué)參考系。

      

      在對具體的力學(xué)特效進行描述,指定是哪一種行為,

      

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

     

3、自動布局

    Xcode中提供了自動布局機制,對一些簡單界面,加入一些約束條件就能處理不同尺寸、屏幕旋轉(zhuǎn)后的界面顯示效果。

    

    使用自動布局(已經(jīng)加了約束條件)前后效果截圖:

        

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

    


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本精品一二区 | av在线一区二区三区四区 | 又黄又爽免费无遮挡在线观看 | 在线成人一区二区 | 曰韩精品| 国产一区二区观看 | 久久久久久久一区二区三区 | av免费不卡国产观看 | 国av在线| 色999久久久精品人人澡69 | 精品国产一区二区三区四区在线 | 精品中文字幕久久久久四十五十骆 | 欧美成年视频 | 久久久久亚洲精品 | 麻豆传传媒久久久爱 | 亚洲最新黄色网址 | av在线免费网址 | 免费国产在线视频 | 国产羞羞网站 | xxxx69hd一hd| 国产亚洲自拍一区 | 亚洲午夜视频 | 久久精品九九 | 一级视频网站 | 欧美日韩成人一区二区 | 成人男女激情免费视频 | 久久影院一区二区三区 | 成人午夜a | 91网站免费在线观看 | 国产精品三级a三级三级午夜 | 国产精品久久久久久久久久久久久久久久 | 久久人 | 久久资源总站 | 中文字幕在线观看1 | av在线免费观看网 | 国产羞羞视频在线观看免费应用 | 国产精品一区二区免费在线观看 | 成人三级视频网站 | 国产69精品久久久久久久久久 | 成人午夜在线免费观看 | 国产91久久久久久 |