一、自定义视图(label-textField组合视图)
     1、自定义视图:系统标准UI之外,自己组合出的新的视图。
     2、优点:iOS提供了很多UI组件,借助它们我们可以实现不同的功能。尽管如此,实际开发中,我们还需自定义视图。积累自己的代码库,方便开发。自己封装的视图,能像UI空间一样,用于别的项目中,能大大降低开发成本,提高开发效率。    
     3、高质量代码的特点:可复用,可移植,精炼等。(高内聚,低耦合)。     
     4、自定义视图步骤
  • 根据需求的不同,自定义视图继承的类也有所不同。一般自定义的视图会继承于UIView。
  • 创建一个UIView子类:@interface LTView : UIView
  • 在类的初始化方法中添加子视图
       
  • 类的.h文件提供一些接口(方法),便于外界操作子视图
  • @property (nonatomic, strong)UILabel *leftLabel; // 左侧label
    @property (nonatomic, strong)UITextField *rightField; // 右侧文本框
     5、小结
  • 自定义LTView(UILabel,UITextField)使用了一种设计模式:复合设计模式。
  • 复合设计模式:A类中,使用B类(或者更多类)作为自己的成员(实例变量)。
  • iOS中复合是特别常见的设计模式。iOS新控件往往都是用已有控件组合而成的。
二、视图控制器
     1、视图控制器是应用程序数据和视图之间的重要桥梁,每个iOS应用程序只显示一个用户界面,显示的内容是由控制器或一组视图控制器协调管理。所以,视图控制器提供了一个基本的框架来构建应用程序。
     2、UIViewController是所有视图控制器的父类。
     3、iOS提供了许多内置的视图控制器,以支持标准的用户界面部分,比如导航控制器(UINavigationController),标签控制器(UITabBarController),表视图控制器(UITableViewController)等。
     4、功能
  • 控制视图大小变化、布局视图、响应时间。
  • 检测以及处理内存警告。
  • 检测以及处理屏幕旋转。
  • 检测视图的切换。
  • 实现模块独立,提高复用性。
三、视图控制器指定视图
     1、如何设置
  • 自定义视图类继承UIView。在初始化方法中添加子视图控件。
  • 重写controller的loadView方法。创建自定义视图对象,并指定为controller的view。(注:loadView方法在控制器的view为nil的时候被调用,用于以变成的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法,用于使用(写)代码来实现控件。)
  • 将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置:添加action、设置delegate等等。
  • 在Controller中添加按钮点击事件实现和代理方法的实现。
     2、视图控制器生命周期
四、MVC
     1、MVC概述
  • UIViewController是MVC设计模式的核心。
  • MVC是一个框架级的设计模式。
  • M是Model,主要用于建立数据模型(即数据的结构)。
  • V是View,主要功能是展示数据。
  • C是控制器,主要是控制M和V的通信
     2、
五、屏幕旋转
     1、视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写几个方法
  • supportedInterfaceOrientations(设置设备支持旋转的方向,如果不添加,视图控制器将无法检测屏幕的旋转)。
  • willRotateToInterfaceOrientation:duration:(暂停音乐、关闭视图交互等)。
  • willAnimateRotationToInterfaceOrientataion:duration:(添加自定义动画等)。
  • didRotateFromInterfaceOrientataion:(播放音乐、打开视图交互等)。
     2、视图的处理
  • 注意视图控制器会自动调整view的大小以适应屏幕旋转,bounds被修改,触发view的layoutSubviews方法。
  • view重写layoutSubviews方法,根据设备方向,重新布局。
  • [UIApplication shareApplication].statusBarOrientation提供设备当前方向。
六、内存警告
     1、内存警告来源:如果手机内存80M,程序运行过程中内存接近80M时程序会为每一个视图控制器发送内存警告消息。
     2、如何处理
    • 控制器能检测内存警告,以便我们避免内存不够引起的crash。
    • 在定义的controller子类中重写didReceiveMemoryWarning方法。
    • 释放暂时不适用的资源(self.view及view的子视图例如数据对象、图像)。

iOS学习之视图控制器的更多相关文章

  1. Swift - iOS中各种视图控制器(View Controller)的介绍

    在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来 ...

  2. iOS开发中视图控制器ViewControllers之间的数据传递

    iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storybo ...

  3. iOS 动画学习之视图控制器转场动画

    一.概述 1.系统会创建一个转场相关的上下文对象,传递到动画执行器的animateTransition:和transitionDuration:方法,同样,也会传递到交互Controller的star ...

  4. iOS学习之视图加载过程中会触发的方法(loadView/viewDidLoad/didReceiveMemoryWarning)

    1.loadView 这是视图控制器用来加载根视图的方法; 如果需要将自定义的视图作为根视图,则不需要调用父类对该方法的实现([super loadView]);直接将自定义视图通过self.view ...

  5. iOS开发之视图控制器(UIViewController)

    视图控制器应该在MVC设计模式中扮演控制层(C)的角色,UIViewController的职责对内管理与之关联的View,对外跟其他UIViewController通信和协调.一个视图控制器管理一个视 ...

  6. iOS:探究视图控制器的转场动画

    一.介绍 在iOS开发中,转场动画的使用无处不见,不只是我们自己更多的使用UIViewblock动画实现一个转场动画,其实,在我们实现VC控制器跳转的时候都是转场动画的实现,例如标签栏控制器的切换.模 ...

  7. 学习模型-视图-控制器MVC模式

    1.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  8. iOS学习笔记——多控制器管理

    NavigationController 在StoryBoard中添加NavigationController 在上网看到很多都是用xib添加,使用StoryBard的有两种办法,但我觉得下面用到那种 ...

  9. IOS 学习笔记 2015-04-15 控制器数据反向传值

    // // FirstViewController.h // 控制器数据传递 // // Created by wangtouwang on 15/4/15. // Copyright (c) 201 ...

随机推荐

  1. BZOJ1996 合唱队 区间DP

    OJ地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1996 设dp(i,j,k)代表在理想结果中[i,j]段最后添加的是i或j(k=0or1) ...

  2. ionic phonegap translate language demo

    中英文转换,经常用到:而ionic  则是通过angular js 来实现: 用到了 http://www.ng-newsletter.com/posts/angular-translate.html ...

  3. leetcode007. Reverse Integer

    /* a good way to predict overflow * each time *10 must predict int overflow * not only the last time ...

  4. Atom markdown .md 编写格式技巧

    使用Atom预览markdown 1.打开任意.md文件(markdown源文件) 菜单栏File->Open file...(ctrl+o)打开文件: 2.windows下使用快捷键 ctrl ...

  5. 移动端的头部标签和meta

    <!DOCTYPE html><!--HTML5 doctype--> <html> <head> <title>xxx</title ...

  6. sqlserver监控阻塞(死锁)具体情况

    公司sqlserver的监控系统主要是采用zabbix监控,但是zabbix的监控只能通过性能计数器给出报警,而无法给出具体的阻塞情况,比如阻塞会话.语句.时间等,所以需要配合sqlserver的一些 ...

  7. C# 和 Unix 时间戳转换

    unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒. /// 时间戳转为C#格式时间 private DateTime GetTime(string timeSt ...

  8. Winform开发常用控件之Checkbox和CheckedListBox

    Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...

  9. 小菜的系统框架界面设计-灰姑娘到白雪公主的蜕变(工具条OutLookBar)

    灰姑娘本身也有自已的优点,但是却可能因为外貌不讨人喜欢,要变成白雪公主却需要有很多勇气和决心去改变自已: 有一颗善良的心 讨人喜爱的外貌   --蜕变-->  我这里讲的是一个工具条的蜕变过程, ...

  10. shopnc二次开发(一)

    ---恢复内容开始--- 以前没有怎么接触过shopnc,感觉界面挺漂亮的,不过后来自己需要开发一个电商系统,就顺便参考了下,感觉构架垃圾的一塌糊涂.不过平时做这个系统二次开发的业务比较多,所以简单的 ...