L002-视图与视图控制器

MVC设计模式

MVC介绍:MVC是一种满足面向对象思想的设计模式
MVC特点:低耦合、高重用、维护及拓展性强; 对修改关闭,对扩展开放。

  • MVC设计模式是一种面向对象思想的设计模式

  • M(Model):模型,用于提供和存储程序执行过程中所需要的数据。

  • V(View):视图,用户可见或可交互的界面元素。

  • C(Controller):控制器,作为Model和View之间交互的媒介,实现大量的鞋无逻辑。

MVC设计模式结构:

这里写图片描述

注意:View及Model永远不会直接交互,通过Controller实现View和Model间的间接交互,Controller处理View接收的用户事件更新Model,Model更新完成通知Controller及时刷新View用户界面。
MVC中常用到委托delegate及通知NOtification设计模式。

UIWindow(窗口)

  • UIWindow作为程序的窗口,容纳并展示所有界面元素

  • AppDelegate中默认初始化了一个UIWindow,一般情况下不用手动新建;

  • 在iOS里UIWindow是UIView的子类

  • UIWindow初始化方法:

[UIWindow alloc] initWithFrame:[[UIScreen mainScreen].bounds]

UIView(视图)

  • UIView是基本的视图类,表示屏幕上的一块矩形区域。

  • UIView用于展示内容以及接收用户交互事件。

  • UIView可以管理其下显示的所有子视图。

  • 屏幕坐标系:

这里写图片描述

视图(层次、大小、位置)
  • subview在显示到屏幕上时,是位于superview 上面的,同一个view中的subview是按照嵌入顺序显示的,越晚加入的subview显示在越上层 ,可以通过tag值从父视图中找到对应的视图。 -(UIView *)viewWithTag:(NSInteger) aTag;

  • frame属性是边框矩形,用于指定视图相对于其父视图坐标系统的位置 和大小(相对于父视图),bounds属性是边界矩形,负责定义视图相对于本地坐标系统的位置和 大小(相对于本身),center属性是边框矩形的中心点。

  • 一些有用的Core Graphic数据结构 CGPoint、CGSize、CGRect以及对应的创建方法:CGPointMake(x, y) CGSizeMake(width, height) CGRectMake(x,y,width,height) CGRectZero

视图(属性)
  • autoresizeSubviews 默认是YES,自动调整子视图大小
  • autoresizingMask 父视图改变的时候自己如何跟着变化
  • hidden 是否隐藏
  • multipleTouchEnabled 是否支持多点触摸
  • subviews 所有子视图(NSArray类型)
  • superview 父视图
  • userInteractionEnabled是否接收交互
  • frame 相对父视图的位置和大小(CGRect)
  • bounds 相对自己的位置和大小(CGRect)
  • center 相对父视图的中心点(CGPoint)
  • transform 变换属性(CGAffineTransform)
  • window 当前view所在的window
  • backgroundColor 背景色(UIColor)
  • alpha 透明度(CGFloat)
  • tag 区分标识(NSInteger)
  • layer 视图层(动画部分重点讲解)(CALayer)
视图(操作)
  • 初始化一个视图-(id) initWithFrame:(CGRect)frame
  • 添加视图:addSubview:
  • 插入视图:
    insertSubview:atIndex:
    insertSubview:aboveSubview:
    insertSubview:belowSubview:
  • 整理视图:
    bringSubviewToFront: sendSubviewToBack:
    exchangeSubviewAtIndex:withSubviewAtIndex:
  • 移除视图:removeFromSuperview

UIViewController(视图控制器)

  • 视图控制器即MVC中的Controller,视图控制器中封装中欧诺个封装了一个UIView,并且管理某个页面区域的所有视图;视图控制器是模型和视图之间的媒介,模型和视图通过视图控制器来交互
  • 多种类的控制器:UIViewController、UINavigationController、 UITabBarController
  • 视图控制器提供了多种的界面响应方法,及界面生命周期方法,如监控界面旋转、界面加载等
  • UIViewController不能直接被使用,创建一个自定义控制器需要子泪花UIViewController。
  • UIWindow默认需要一个控制器作为整个窗口的根控制器,使用rootViewController来添加。
  • 控制器的- (void)viewDidLoad;方法会在控制器自身视图(self.view)及其它配置初始化完成后调用,作为控制器的入口方法,可以在其中添加自定义视图控件的初始化方法或初始化数据;
UIViewController(方法)
  • view 视图控制器的根视图
  • title 视图控制器的标题
  • interfaceOrientation 朝向(只读属性)
  • initWithNibName:bundle: 指定初始化方法
  • loadView 加载视图的方法,只调用一次
  • viewDidLoad 视图加载之后被调用,只调用一次
  • viewWillAppear: 视图将要出现的时候调用
  • viewDidAppear: 视图出现的时候调用
  • viewWillDisappear: 视图将要消失的时候调用
  • viewDidDisappear: 视图消失的时候调用
  • didReceiveMemoryWarning 接受到内存警告的时候调用
  • 视图控制器间基本的页面切换方法:
    模态控制器切换:
-   (void)presentViewController:(UIViewController *)
           viewControllerToPresent animated:(BOOL)flag 
       completion:(void (^)(void))completion;
-   (void)dismissViewControllerAnimated:(BOOL)flag 
       completion:(void (^)(void))completion;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值