代码创建UI界面

UIKit框架

UIResponder

– UIApplication

– UIView
     •  UIWindow,UILabel,UIImageView,UIPickerViewUIAlertView,UIScrollVIew,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?????类实现数据封装

             

           

转载于:https://www.cnblogs.com/handonglengxueMing/p/5057681.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值