UI第三节 自定义视图,视图控制器

自定义视图

继承于UIView

1、创建一个UIView子类
2、在类的初始化方法中添加子视图

3、类的.h文件提供一些接口(方法),便于外界操作子视图。 


label - textField 视图

假设我们使⽤用LTView类代表label-textfield视图。

我们创建一个LTView类继承于UIView

我们将LTView作为一个容器,在LTView的初始化方法中创建并添加labeltextField

此时的LTView就变成了一个具有labeltextField的视图了。 


LTView 控制

LabelTextfield封装到LTView中,在⼀一定程度上简化了我们的代码。

往往我们需要对LTView中的Label或者Textfield进⾏行⼀一定的控制,⽐比如:设置Labeltext,获取Textfieldtext,给Textfield指定delegate,设置textColor等。

为了⽅方便外界操作LabelTextfield,因此我们要为外界提供⼀一些⽅方法。


视图控制器

UIViewController :视图控制器.

控制视图显示,响应事件.

分担AppDelegate工作

实现模块独立,提高复用性.

功能:

控制视图大小变换,布局视图,响应事件.

检测以及处理内存警告

检测以及处理屏幕旋转

检测视图的切换


MVC 概述

UIViewControllerMVC设计模式的核⼼心。

MVC是⼀一个框架级的设计模式。

MModel,主要⽤用于建⽴立数据模型(即数据的结构)

VView,我们能看到的所有控件都是view,view主要的功能是展⽰示数据。

C是控制器,主要是控制MV的通信。 

使用视图控制器

定义UIViewController的子类

创建视图控制器对象,作为window的根视图控制器

viewDidLoad中使⽤用默认创建好的视图对象view


设置自定义视图

自定义视图类继承UIView。在初始化方法中添加子视图控件。

重写controllerloadView方法。创建自定义视图对象,并指定为controllerview

将子视图控件对象设置为自定义视图类的属性,在viewDidLoad⽅方法中进行设置:添加action、设置delegate等等。

controller中添加按钮点击事件实现和代理方法的实现。 


检测屏幕旋转

视图控制器本⾝身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写⼏几个
⽅方法:

1. supportedInterfaceOrientations(设置设备⽀支持旋转的⽅方向)

2. willRotateToInterfaceOrientation:duration:(暂停⾳音乐、关闭视图交互等)

3. willAnimateRotationToInterfaceOrientation:duration:(添加⾃自定义动画等)

4. didRotateFromInterfaceOrientation:(播放⾳音乐、打开视图交互等)。 


视图处理

注意视图控制器会⾃自动调整view的⼤大⼩小以适应屏幕旋转,bounds

被修改,触发viewlayoutSubviews⽅方法。

view重写layoutSubviews⽅方法,根据设备⽅方向,重新布局。

[UIApplication shareApplication].statusBarOrientation提供设备当前⽅方向。 


容器视图控制器

self.view显⽰示:viewWillAppear: 和 viewDidAppear:

self.view消失:viewWillDisappear: 和 viewDidDisappear:

self.view添加到父视图上时,执行appear方法self.view从父视图上移除时,执行disappear方法。

执行顺序

定义FirstViewControllerSecondViewController类,first作为window的根视图控制器。

SecondViewControllerview添加到FirstViewControllerview上。

SecondViewControllerview移除。

查看SecondViewController4个方法的执行顺序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值