UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏
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的通信。
版权声明:本文为博主原创文章,未经博主允许不得转载。
UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏的更多相关文章
- Run Loop简介 分类: ios技术 ios相关 2015-03-11 22:21 73人阅读 评论(0) 收藏
做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出 ...
- NYOJ-32 组合数 AC 分类: NYOJ 2014-01-02 22:21 112人阅读 评论(0) 收藏
#include<stdio.h> int num[100]; int pnum(int n,int v); int mv=0; int main(){ int n,v; scanf(&q ...
- linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...
- Raspberry Pi + 3个USB摄像头 + Motion(简易监控设备配置记录1——介绍以及安装) 分类: Raspberry Pi 服务器搭建 2015-04-12 19:21 226人阅读 评论(0) 收藏
参考: Debian官网链接 Motion官网链接 首先,参见Debian官网链接对Motion的介绍,网页中包含了所有相关依赖包,请首先确保这些依赖包的安装. Motion介绍 摘出对Motion的 ...
- shell脚本调试 分类: 学习笔记 linux ubuntu 2015-07-14 12:49 53人阅读 评论(0) 收藏
1.sh -x script 这将执行脚本并显示所有变量的值 如,脚本: #!/bin/bash #a test about shift if [ $# -le 0 ] then echo " ...
- shell入门之流程控制语句 分类: 学习笔记 linux ubuntu 2015-07-10 16:38 89人阅读 评论(0) 收藏
1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...
- shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏
格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...
- shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏
手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...
随机推荐
- 纯CSS实现一个微信logo,需要几个标签?
博客已迁移至http://lwzhang.github.io. 纯CSS实现一个微信logo并不难,难的是怎样用最少的html标签实现.我一直在想怎样用一个标签就能实现,最后还是没想出来,就只好用两个 ...
- 51nod 1232 完美数 数位dp
1232 完美数 题目来源: 胡仁东 基准时间限制:2 秒 空间限制:131072 KB 如果一个数能够被组成它的各个非0数字整除,则称它是完美数.例如:1-9都是完美数,10,11,12,101都 ...
- MongoDB(课时13 where条件过滤)
3.4.2.8 条件过滤 关系型数据库开发对于数据的筛选,想到的一定是where语句,MongoDB里面提供的是"$where". 范例:使用where进行数据的查询 db.stu ...
- TTFB
TTFB Time To First Byte 1.含义 最初的网络请求被发起”到“从服务器接收到第一个字节前”所花费的毫秒数 包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字 ...
- wpf里窗体嵌入winform控件被覆盖问题
问题1:嵌套Winform控件(ZedGraph)在WPF的ScrollViewer控件上,出现滚动条,无论如何设置该Winform控件都在顶层,滚动滚动条会覆盖其他WPF控件. 解决办法:在Sc ...
- 源代码方式调试Mycat
如果是第一次刚接触MyCat建议下载源码在本地通过eclipse等工具进行配置和运行,便于深入了解和调试程序运行逻辑. 1)源代码方式调试与配置 由于MyCat源代码目前主要托管在github上,大家 ...
- Android之EventBus1.0 和EventBus3.0的使用详解
当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,那么我们通常采用的就是Android中的解耦组件EventBus.EventBus是一款针对Android优化的发布/订阅 ...
- WebView 实现JS效果和a标签的点击事件
目前很多android app都可以显示web页面的界面,嵌入式开发,这个界面一般都是WebView这个控件加载出来的,学习该控件可以为你的app开发提升扩展性. 先说下WebView的一些优点: 可 ...
- fzu1901 kmp
For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SIZE(S)-p-1], then the ...
- python 小练习 11
桌子上有一堆数量不超过20的果子,每个果子的重量都是不超过20的正整数,全部记录在列表 L 里面.小明和小红决定平分它们,但是由于他们都太自私,没有人愿意对方比自己分得的总重量更多.而果子又不能切开, ...