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,写的文章可能漏洞较多,欢迎你们补充。

固然学习建议仍是 多看官方文档

相关文章
相关标签/搜索