Hello,經過Android程序員 如何入門iOS ——故事從這裏開始 做爲一個Androider 去看iOS程序的目錄結構應該算有個大概的理解了,接下去咱們小小介紹下和咱們交道打的最多的UIViewController
。程序員
Android 開發者們不會對activity
有陌生的感受吧?那麼這裏的UIViewController
就能夠理解成Android
中的activity
,UIViewController
有一個不一樣的地方, 就是它和某一個view
是強耦合的,在邏輯上,一個UIViewController
必然帶一個view
(其實不帶view
的activity
好像也沒什麼價值= =)。segmentfault
咱們這裏須要清楚明白一點的是,iOS
不像Android
,帶了一個layout system
,它在不採用autolayout
的狀況下並不會自動佈局,Android
的一個ViewGroup
的生命週期經歷3個階段,分別是app
measureide
layout佈局
draw性能
Android
在大部分狀況下,ViewGroup
都會自動的爲它的子view
撐開足夠的空間,用以正確顯示View
。這麼智能的作法是在measure
和layout
中完成的。學習
iOS
的繪圖性能一直完爆Android
的其中一個緣由就是由於它簡單的佈局系統不會由於佈局的複雜性加強而增長計算量。code
若是不採用autolayout
,那麼在iOS
中,全部的View
有個初始化方法叫作initWithFrame:
傳入一個CGRect
矩形對象,矩形定義了 (x
,y
,width
,height
),這四元 不就是咱們幫系統完成了一次measure
和layout
麼? 那麼iOS
只用儘管draw
就好了。對象
這裏不提Activity LifeCycle
的緣由是,Activity
的LifeCycle
好像和View
一點關係都沒有生命週期
onCreate
-onStart
-onResume
-onPause
-onStop
-onDestory
這些和Activity
自己有關,彷佛在哪都找不到View
相關的事件回調,可是在iOS
的UIViewController
中,卻有
viewWillAppear
-viewDidAppear
-viewWillDisappear
-viewDidDisappear
好像每個都和View
有關,不愧名字爲ViewController
啊~
咱們從Android
遷移到iOS
首先寫UIViewController
的時候,一個後遺症就是會去找ViewController
的生命週期,其實不用想太多,由於iOS充分利用了getter
和setter
的便利性,在咱們對UIViewController.view
的訪問過程當中,會調用loadView
和viewDidLoad
這2個回調方法,所以,咱們原先在Activity
中, setContentView
以後乾的事情,就能夠在viewDidLoad
中去作了,至於ViewController
是否顯示消失,那麼就在其它四個回調中去作咱們想要作的事。
本文咱們簡單介紹了UIViewController
和Activity
自身生命週期
的不一樣和兩個系統佈局系統
的不一樣,但願對你們有所幫助,因爲我本身也剛剛入門iOS,寫的文章可能漏洞較多,歡迎你們補充。
固然學習建議仍是 多看官方文檔