码迷,mamicode.com
首页 > 其他好文 > 详细

代码创建UI界面

时间:2015-12-18 18:55:11      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

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,这三个部分一最少的耦合协同工作,从而提升应用的可扩展性和可维护性。起整体结构如图所示

技术分享

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对象

技术分享

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

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

视图控制器

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

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

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

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

            ——通过关联storybord中的ViewController

             ——通过关联xib

           ——通过手写代码

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

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

根视图控制器rootViewController

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

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???????????????????????? 方法中编写代码创建子视图技术分享

          CGRect:??包含x,y,width,height????????四个变量

           x,y????????????????????????????定位视图详单雨左上角的坐标位置

          width,height??????????确定视图的宽度和高度???????? CGRectMake ????创建CGRect??????变量的函数??

          initWithFrame??????????根据指定位置和大小创建视图

          ?????????????? self.view addSubView 添加子视图??????????  

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

          技术分享
           
          • 在??AppDelegate??????window????中创建window对象,??????????指定根视图控制器

          • •  ????视图控制器通过关联????????????xib??????????来构建界面,???????????????? ????????????也可以通过手写代码来创建界面,??????????完成界面布局(View????部分)

          • •  ????视图控制器通过时间机制响应用户交互,并通过跳转功能完成呢个界面切换??????????????????????????(Controller)

          • •  ????编写Model??????????类实现数据封装

             

           

代码创建UI界面

标签:

原文地址:http://www.cnblogs.com/handonglengxueMing/p/5057681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!