Android 程序員學習 iOS ——UIViewController 和 Layout System

回顧

Hello,經過Android程序員 如何入門iOS ——故事從這裏開始 做爲一個Androider 去看iOS程序的目錄結構應該算有個大概的理解了,接下去咱們小小介紹下和咱們交道打的最多的UIViewController程序員

什麼是ViewController

Android 開發者們不會對activity有陌生的感受吧?那麼這裏的UIViewController就能夠理解成Android中的activityUIViewController有一個不一樣的地方, 就是它和某一個view是強耦合的,在邏輯上,一個UIViewController 必然帶一個view(其實不帶viewactivity好像也沒什麼價值= =)。segmentfault

iOS Layout System 和 Android Layout System

咱們這裏須要清楚明白一點的是,iOS不像Android,帶了一個layout system,它在不採用autolayout的狀況下並不會自動佈局,Android的一個ViewGroup的生命週期經歷3個階段,分別是app

  1. measureide

  2. layout佈局

  3. draw性能

Android在大部分狀況下,ViewGroup都會自動的爲它的子view撐開足夠的空間,用以正確顯示View。這麼智能的作法是在measurelayout中完成的。學習

iOS的繪圖性能一直完爆Android的其中一個緣由就是由於它簡單的佈局系統不會由於佈局的複雜性加強而增長計算量。code

若是不採用autolayout,那麼在iOS中,全部的View有個初始化方法叫作initWithFrame: 傳入一個CGRect矩形對象,矩形定義了 (x,y,width,height),這四元 不就是咱們幫系統完成了一次measurelayout麼? 那麼iOS只用儘管draw就好了。對象

iOS UIViewController LifeCycle

這裏不提Activity LifeCycle的緣由是,ActivityLifeCycle好像和View一點關係都沒有生命週期

onCreate - onStart - onResume - onPause - onStop - onDestory

這些和Activity自己有關,彷佛在哪都找不到View相關的事件回調,可是在iOSUIViewController中,卻有

viewWillAppear - viewDidAppear - viewWillDisappear - viewDidDisappear

好像每個都和View有關,不愧名字爲ViewController啊~

咱們從Android遷移到iOS首先寫UIViewController的時候,一個後遺症就是會去找ViewController的生命週期,其實不用想太多,由於iOS充分利用了gettersetter的便利性,在咱們對UIViewController.view的訪問過程當中,會調用loadViewviewDidLoad這2個回調方法,所以,咱們原先在Activity中, setContentView以後乾的事情,就能夠在viewDidLoad中去作了,至於ViewController是否顯示消失,那麼就在其它四個回調中去作咱們想要作的事。

參考官方文檔:https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIViewController_Class/

總結

本文咱們簡單介紹了UIViewControllerActivity自身生命週期的不一樣和兩個系統佈局系統的不一樣,但願對你們有所幫助,因爲我本身也剛剛入門iOS,寫的文章可能漏洞較多,歡迎你們補充。

固然學習建議仍是 多看官方文檔

相關文章
相關標籤/搜索