UIKit框架

UIResponder

– UIApplication

– UIView
     •  UIWindow,UILabel,UIImageView,UIPickerViewUIAlertView,UIScrol
lVIew,UIProgressView,UIToolbar,UIWebView

     • UIControl

                   – UIButton,UITextField,UISwitch,UISegementControl, UIPageControl,UISlider

                   – UIDatePicker

– UIViewController
     • UITabBarController,UINavigationController,UITableController 

IOS的MVC模式

MVC是所有面向对象语言都应该遵守的规范,MVC思想将一个应用分成三个基本部分:Model,View,Controller,这三个部分一最少的耦合协同工作,从而提升应用的可扩展性和可维护性。起整体结构如图所示

代码创建UI界面

MVC模式,江程序代码分类Model,View,Control三种组件。

       Model组件:在进行IOS应用开发时,Model组件通常是一些普通的OC类,这些OC类空用于保存少量的应用程序状态数据,

      View组件:在进行IOS应用开发时,主要使用Interface Bui来的人来创建视图组件。在某些特殊的情况下,程序也可以需要在代码中出创建界面,修改界面。

     Control组件:大部分时候,控制器组件都会集成UIKit框架中的UIViewController基类,通过集成该基类,可以让控制器类直接获取大量的功能,并且不在需要重新设置累的结构。

窗口,视图,视图控制器

UIResponder是视图响应这的基类(继承自NSObject)

      – UIApplication,UIView,UIViewController是子类,都可以作为响应者

     UIView是视图的基类

       —窗口的UI控件都是UIView的子类

      UIViewController是视图控制器的基类

      窗口UIWindow是UIView的子类

       窗口的主要作用,一时作为视图的容器,包含视图,二是分发时间给视图,一个APP通常只有一个窗口,且必须有一个窗口,三是与视图控制器一起写作,呈现内容

创建window对象

——使用storyboard,自动创建

——不使用storyboard,手动创建

//创建一个全屏的window对象

self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

在AppDelegate类中创建window对象

代码创建UI界面

    在其他位置不应该创建window对象,但是可以获取的

    UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 

视图控制器

      视图控制器是视图和数据进行交互的控制器,在MVC模式中充当Controller角色

      在所有视图控制器都是UIViewController的子类

       一个APP需要一个window,而一个window需要一个跟试图控制器(window,rootViewController),作为首页或者第一屛

     每个视图控制器包含一个根视图(view属性),其他视图都是根视图的子孙视图

            ——通过关联storybord中的ViewController

             ——通过关联xib

           ——通过手写代码

     每个视图控制器应该对应一个界面和相应的业务

     由于一个APP需要显示多个界面,所以一般会有多个视图控制器相互跳转

根视图控制器rootViewController

       新建一个继承雨UIViewController的类,然后让程序的窗口加载并显示这个viewController视图控制器关联的用户界面。这个就是APP的跟试图控制器代码创建UI界面

UIViewController生命周期
 
  • UIViewController􏱙􏰑􏰒(视图控制器),他包含如下常见的需要重写的方法

    􏱭􏱮􏱡

    • •  viewDidLoad􏱯􏰠􏰌:当该控制器管理的视图被加载完成后,系统会自动调用该方法

    • •  didReceiveMemoryWarning􏱯􏰠􏱵􏱶􏱺􏱻􏱼􏰍􏱟􏱽􏱾􏱿􏲀􏲁􏱒􏲂 􏱍􏱹􏱟􏰌􏱭􏱮􏱡:当系统检测到可用内存紧张时,将会调用该方法

    • •  viewWillAppear􏱯􏰠􏰌:当控制器管理的视图将要显示出来时,系统会自动调用该方法

    • •  viewDidAppear􏱯􏰠􏰌:当该控制器管理的视图显示出来后,系统会自动调用该方法

    • •  viewWillDisappear:当该控制器管理的视图将要被隐藏或被将要移出窗口时,系统会自动调用该方法

    • •  viewDidDisappear􏱯􏰠􏰌:当该控制器管理的视图被隐藏或被移出窗口时,系统会自动调用该方法 􏱘􏲁􏱒􏱵􏱶􏱷􏱸􏱹􏱟􏰌􏱭􏱮 

      视图

      视图试纸继承UIView类的控件,表示屏幕上一块矩形区域,在MVC模式中承担View的职责

      一个ViewController􏲑必须有一个根视图

      视图的作用是用来显示所在区域的内容,并响应触摸事件􏰋􏲔􏲕􏲖􏲇(UIControl􏰜􏰦􏰅子类

      • 所有的视图都可以包含子视图

      • •   常用操作

      • •  addSubview 􏲘􏱛􏰧􏰨􏰦􏰑􏰒添加一个子视图

      • •  removeFromSuperview 􏲙􏲚􏰑􏰒从父视图中删除自己

      • •  viewWithTag从自己和子视图中根据 􏲙􏲜􏰖􏰦􏰑􏰒􏰆􏰬􏰘tag􏲝􏲞􏰑􏰒查找视图

      • •  subViews 􏰣􏰤􏰦􏰑􏰒􏰜􏰗􏲟所有子视图的数组

      • •  hidden 控制是否隐藏

      • •  backgroundColor 􏲧􏲨背景颜色

        第一种:使用Xib创建根试图􏰢 

        1,􏲫􏲬􏰼􏰽默认关联:􏰀􏰁创建ViewController􏲁􏲭􏲮时勾选also create xib file

        • 2,􏰾􏱸􏰼􏰽手动关联,􏱨􏲯􏲰􏲄􏰀􏰁如果分开创建ViewController和􏰖xib

        • –  2.1 􏲱􏲲打开xib􏲳􏲇文件,􏲱􏲲􏲴􏲵打开左侧dock􏲍􏲎区域,􏲮􏲶选择file’s owner

        • –  2.2 右侧面板选择第三个􏲵􏱃􏲷􏲮􏲶􏰲􏲸􏰨 Identify inspector

        • –  2.3 􏰄在CustomClass􏰆􏲹􏰿􏰪􏰼􏰽􏰜中填写要关联的ViewController􏰅􏲺类名,􏲻􏲼回车

        • –  2.4 右键点击􏲽􏲾􏲿file’s owner,􏲂将outlets中的 􏰆􏰜view右侧的小圆点拖动到根􏱼􏰬view

        • –  补充􏰟:可以在􏰍􏰎􏰄ViewController􏰆􏳁􏳂􏱉􏰨􏳃中定义多个副view,􏰄在xib􏰆􏳁􏰨􏱉􏰨中定义多个副视图 􏳃􏰑􏰒,􏲂􏰈􏳄􏰙􏰚􏰼􏰽就爱你跟他们进行关联,􏳅􏳆配合addSubview和

          􏰖removeFromSuperview􏰙􏰚􏱂􏱃􏰜􏳇􏳈􏳉􏳊 进行界面简单的切换

          第二种:手写代码创建根视图

          􏱬􏰿重写ViewController􏰜的loadView􏱭􏱮方法,􏳌self.view赋值一个视图对象

          􏰨􏰑􏰒􏰂􏰃

          -(void)loadView {

          //􏰾􏰿􏱀􏱁􏳍􏰁􏰧􏰨􏳎􏰳􏰑􏰒􏰭􏰮􏰬􏰑􏰒手写代码创建一个全屏视图作为跟试图,重写此方法会导致关联􏱬􏰿􏳏􏱭􏱮􏱍􏳐􏳑􏰼􏰽xib􏳒􏳓失效
          UIView *rootView = [[UIView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

          rootView.backgroundColor = [UIColor redColor];

          self.view = rootView; }

          􏰄在viewDidLoad􏰆􏰾􏰿􏱀􏱁􏰀􏰁中手写代码创建控件􏲇,添加到􏲘􏱛􏱼self.view􏰆中

          [UIScreen mainScreen]bounds]获取全屏的坐标和大小

           

          在根视图中添加子视图

          1,􏰠􏲪􏱟当使用xib􏰀􏰁􏰬􏰑􏰒􏲁创建根试图时,􏳘􏲁􏰍􏰎􏰄同事可以在xib中画子视图􏰆􏳙􏰦􏰑􏰒

           2,􏳚􏰍􏰎􏰄也可以在viewDidLoad􏱭􏱮􏰆􏳛􏰿􏱀􏱁􏰀􏰁􏰦􏰑􏰒 方法中编写代码创建子视图代码创建UI界面

          CGRect:􏰵包含x,y,width,height􏳜􏰨􏳝􏳞四个变量

           x,y􏳁􏰉􏰑􏰒􏱄􏰠􏱈􏲴􏲉􏰡􏰜􏳔􏲡􏰉定位视图详单雨左上角的坐标位置

          width,height􏳟􏳁􏰑􏰒􏰜确定视图的宽度和高度􏳠􏰖􏳡􏳠 CGRectMake 􏰀􏰁创建CGRect􏳝􏳞􏰜变量的函数􏰗

          initWithFrame􏰬􏰘􏲆􏳁􏰉根据指定位置和大小创建视图

          􏰖􏳕􏳀􏰀􏰁􏰑􏰒 self.view addSubView 添加子视图􏲘􏱛􏰦􏰑􏰒  

          窗口,视图,视图控制器的关系

          代码创建UI界面
           
          • 在􏰄AppDelegate􏰆􏰀􏰁window􏰂􏰃中创建window对象,􏲆􏳁􏰬􏰑􏰒指定根视图控制器

          • •  􏰑􏰒视图控制器通过关联􏰓􏰔􏰺􏰻􏰼􏰽xib􏲄􏳍􏰁􏱂􏱃来构建界面,􏳚􏰍􏰎􏰺􏰻􏰾􏰿􏱀 􏱁􏲄􏰀􏰁􏱂􏱃也可以通过手写代码来创建界面,􏱳􏱴􏱂􏱃􏴞完成界面布局(View􏳳􏲰部分)

          • •  􏰑􏰒视图控制器通过时间机制响应用户交互,并通过跳转功能完成呢个界面切换􏱝􏰺􏰻􏱎􏱏􏳺􏲥􏱳􏱴􏱂􏱃􏳉􏳊(Controller)

          • •  􏳛􏰿编写Model􏰅􏴘􏴗􏰗􏰘类实现数据封装