[TwistedFate]MVC视图控制器
来源:互联网 发布:徐州专业淘宝摄影 编辑:程序博客网 时间:2024/05/16 08:49
MVC
基本介绍
- UIViewController是MVC设计模式的核⼼。
- MVC是⼀个框架级的设计模式。
- M是Model,主要⽤于建⽴数据模型(即数据的结构)
- V是View,我们能看到的所有控件都是view,view主要的功能是展⽰数据。
- C是控制器,主要是控制M和V的通信
一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑
优点
让视图(View)可以复用
应用
首先 视图层
1. 视图层(view) 只写视图的布局
2. 数据模型层(model) 只写数据的结构(以NS开头)
3. 控制器(controller)负责逻辑部分(例如从model里取数据 然后去更改视图显示)
MVC 把工程中的代码模块化(降低耦合度) 尽量然视图部分的代码可以复用
一般一个视图控制一个页面
视图控制器
每一个视图控制器 都自带一个view
这个view和屏幕一样大
loadView方法
每一个视图控制器 都自带一个View
并且这个View跟屏幕一样大
- (void)loadView{// 这个方法是加载视图的 并且加载的是自身的View// 调用父类的方法 去加载自身的View// [super loadView];// 用之前的LoginView替换 控制器自带的View LoginView *logview = [[LoginView alloc] initWithFrame:[UIScreen mainScreen].bounds]; logview.tag = 1000; // 帮系统给self.view赋值 self.view = logview; [logview release];}
viewDidLoad
视图已经加载完成
1. (void)viewDidLoad{ [super viewDidLoad]; // 控制器中写逻辑部分 // 更改一下自身的颜色 self.view.backgroundColor = [UIColor grayColor]; LoginView *loginView = (LoginView *)self.view ; [loginView.loginButton addTarget:self action:@selector(button:) forControlEvents:(UIControlEventTouchUpInside)];}
didReceiveMemoryWarning
2. (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; NSL(@"内存警告"); // 内存警告 做什么 // 释放已经显示过的视图 并且不是当前显示的 // 如果这个视图正在被显示 那么这个视图的window属性就不为空 if([self isViewLoad] == YES && self.view.window == nil){ // 把当前视图释放 self.view = nil; }}
检测屏幕旋转
屏幕旋转
- 屏幕横屏时 改变原来的布局
- 屏幕竖屏时 屏幕竖屏时 变回原来的布局
1. 允许屏幕旋转
- (BOOL)shouldAutorotate{ return YES;}
- 指定屏幕旋转的方向
- (NSUInteger)supportedInterfaceOrientations{ // 制定屏幕旋转方向 return UIInterfaceOrientationMaskAll;}
- 找到旋转触发的方法
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{ // 打印屏幕大小 NSLog(@"%@",NSStringFromCGSize(size));}
- 判断屏幕方向 更改布局
// 重新布局子视图// frame发生变化的时候会触发layoutSubViews方法- (void)layoutSubviews{ // 因为不知道父类这个方法做了什么 // 所以需要在重写的时候先调用父类的方法 然后再写自己需要写的方法 [super layoutSubviews]; // 更改布局 frame发生变化 相当于横屏了 // 此时 需要重新布局 // 判断竖屏 还是 横屏 // 1.把应用程序取出来 // 2.判断一下当前应用程序 屏幕的朝向 // 取出应用程序 // 单例方法命名规范share---- UIApplication *app = [UIApplication sharedApplication]; // 判断方向 if (app.statusBarOrientation == UIInterfaceOrientationPortrait || app.statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) { NSLog(@"竖着"); self.passWordLTView.frame = CGRectMake(self.userNameLTView.frame.origin.x, self.userNameLTView.frame.origin.y + self.userNameLTView.frame.size.height + kRowHeight, self.userNameLTView.frame.size.width, self.userNameLTView.frame.size.height); }else { NSLog(@"横着"); self.passWordLTView.frame = CGRectMake(self.userNameLTView.frame.origin.x + self.userNameLTView.frame.size.width + 10, self.userNameLTView.frame.origin.y , self.userNameLTView.frame.size.width, self.userNameLTView.frame.size.height); }}
- 测试一下
0 0
- [TwistedFate]MVC视图控制器
- [TwistedFate]导航视图控制器
- [TwistedFate]容器视图控制器 视图生命周期
- MVC(模型-视图-控制器)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器(MVC)
- MVC 模型-视图-控制器体系结构
- MVC(模型---视图---控制器)
- yii 模型-视图-控制器 (MVC)
- 2.模型-视图-控制器 (MVC)
- 模型,视图,控制器(MVC)
- [TwistedFate]自定义视图
- [TwistedFate]UITableView表视图
- 模型—视图—控制器(MVC)基本知识
- 模型-视图-控制器(MVC)
- 模型-视图-控制器(MVC)框架是什么东西?
- iOS真机不能运行,模拟器可以
- 电脑内部剖析
- ubuntu常用设置
- scala学习计算开始基本语法2
- git连接本地服务器教程
- [TwistedFate]MVC视图控制器
- QT 和安卓的问题
- hdu 1224
- 扩展星历原理及应用
- 头文件
- Java反射reflect学习笔记_1:反射的简述
- Fragment和Fragment之间的数据传输
- 字典树的妙用(求单词出现的次数)
- 【UML】用例图