UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件

功能:

1.分担APPdelegate的工作

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

创建UIViewController对象:

UIViewController *viewController=[[UIViewController alloc]init];

UIViewController 自身带了一个UiView,默认的大小和屏幕大小一样.

每一个window都带有一个根视图,如果不给根视图赋值,默认根视图就是它本身(window)

self.window.rootViewController=viewController;//设置self.window的根视图

自定义的视图控制器

@implementation MyViewController
//指定初始化方法(当要初始化对象时,一定会走的方法)
//一般不在UIViewController指定初始化方法里做任何操作
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
NSLog(@"%s",__FUNCTION__);
}
return self;
} //加载视图
-(void)loadView {
//如果写了这个方法一定要对UIViewController自带的view初始化
self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]bounds] ];
// 重写父类的方法
[super loadView];
// 如果以上操作都不做,loadView和viewDidLoad会走两遍,这时候就出现莫名的错误
NSLog(@"%s",__FUNCTION__);
} //视图加载完成
-(void)viewDidLoad{
// 写了这个必须要对UIViewController自带的 view 初始化
[super viewDidLoad];
// 设置视图控制器view的背景颜色
self.view.backgroundColor=[UIColor grayColor]; UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(50, 20, 200, 40)];
label.backgroundColor=[UIColor yellowColor];
label.text=@"这是标签";
[self.view addSubview:label];
[label release]; UITextField *textField=[[UITextField alloc]initWithFrame:CGRectMake(50, 60, 200, 40)];
textField.backgroundColor=[UIColor redColor];
textField.placeholder=@"文本输入框";
// 为textfield设置代理
textField.delegate=self; [self.view addSubview:textField];
[textField release]; UIButton *button=[UIButton buttonWithType:UIButtonTypeSystem];
button.frame=CGRectMake(50, 100, 200, 40);
button.backgroundColor=[UIColor cyanColor];
[button setTitle:@"Button" forState:UIControlStateNormal];
// 给button添加点击事件
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button];
[button release]; NSLog(@"%s",__FUNCTION__);
} //接收内存警告
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];
NSLog(@"清理内存吧"); // Dispose of any resources that can be recreated.
}
#pragma mark --button点击事件--
-(void)buttonAction:(UIButton *)sender{
self.view.backgroundColor=[UIColor colorWithRed:COLORVALUE green:COLORVALUE blue:COLORVALUE alpha:1.0];
}
#pragma mark --实现代理方法--
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES; }
@end

屏幕旋转

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor=[UIColor greenColor]; UIView *topview=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 200, 100)];
topview.backgroundColor=[UIColor cyanColor];
[self.view addSubview:topview];
topview.tag=100;
[topview release];
}
//支持旋转的方法
//是否允许旋转
-(BOOL)shouldAutorotate{
return YES;
}
//允许的旋转方向
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
//屏幕旋转的时候走的方法.iOS8.0会才支持
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
// 拿到屏幕的宽和高
NSStringFromCGSize(size); if (size.width>size.height) {
//横屏
UIView *view=[self.view viewWithTag:100];
view.frame=CGRectMake(0, 50,size.width*2/3, 100);
}else{ UIView *view=[self.view viewWithTag:100];
view.frame=CGRectMake(0, 50,size.width*2/3, 100); } NSLog(@"屏幕旋转了");
}

UIViewController是MVC设计模式的核⼼。

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

M是Model,主要⽤于建⽴数据模型(即数据的结构)

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

C是控制器,主要是控制M和V的通信。

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. 【统计学习】SVM之超平面方程来源
  2. Windows下使用NIF扩展Erlang方法
  3. Hadoop-Map/Reduce实现实现倒排索引
  4. 【自学iOS攻略】了解有什么新技术的途径
  5. Chrome调试nodejs
  6. [RxJS] Reactive Programming - Using cached network data with RxJS -- withLatestFrom()
  7. mysql实现随机查询
  8. C# ReferenceEquals(), static Equals(), instance Equals(), 和运算行符==之间的关系
  9. 201521123097《Java程序设计》第六周学习总结
  10. shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?
  11. [20190415]关于shared latch(共享栓锁).txt
  12. 基于VC++的网络扫描器设计与实现
  13. Python之简单验证码实现
  14. 题解-bzoj2560 串珠子
  15. Unity 敌人波次设计
  16. ROS学习手记 9 -- 阶段性复习
  17. Android接口与架构(驱动开发)翻译官方文档
  18. 阿里云修改主机名(以centOS为例)
  19. Oracle-两表关联更新和插入
  20. 手机app后台初学

热门文章

  1. 正则表达式及R字符串处理之终结版
  2. 关于Java 中Integer 和Long对象 对比的陷阱(简单却容易犯的错误)
  3. JavaMail直接发送邮件
  4. Spring AOP 切面编程记录日志和接口执行时间
  5. Flutter学习笔记(四)--Flutter几个小知识点
  6. JavaScript运算符与类型
  7. 雷林鹏分享:C# 属性(Property)
  8. Vue自动化工具(Vue-CLI)
  9. Underground Lab CodeForces - 782E (欧拉序)
  10. 比较windows下的5种IO模型