UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏
2015-07-02 22:21
691 查看
UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件
功能:
1.分担APPdelegate的工作
2.实现模块独立,能提高复用性
创建UIViewController对象:
UIViewController 自身带了一个UiView,默认的大小和屏幕大小一样.
每一个window都带有一个根视图,如果不给根视图赋值,默认根视图就是它本身(window)
自定义的视图控制器
屏幕旋转
UIViewController是MVC设计模式的核⼼。
MVC是⼀个框架级的设计模式。
M是Model,主要⽤于建⽴数据模型(即数据的结构)
V是View,我们能看到的所有控件都是view,view主要的功能是展⽰数据。
C是控制器,主要是控制M和V的通信。
功能:
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的通信。
相关文章推荐
- IOS键盘的相关设置(UITextfield)
- IOS--UI--LessonUILabel
- IOS--UI--LessonButton UIImage
- IOS菜鸟的所感所思(十五)—— UIScrollView和UIPageControl的组合
- 快速的判断两个字符串型数组是否有交集
- iOS学习笔记 (9) UITabBarController分栏控制器
- Map存储 (key, value)
- iOS学习笔记(6)UINavigationController
- Android5.0L因SystemUI ANR导致的黑屏问题分析
- iOS学习笔记(4)UIView和UIImageView
- UIButton/按钮
- uCGUI 按键切换对话框内子控件焦点
- 3000套IOS android源码分享 7.2G UI素材
- 加班~~~第二天之自定义UIPageControl控件
- 【Web探索之旅】第三部分第三课:协议
- UVA 11235--Frequent values+RMQ问题
- cordova build android提示No installed build tools found的解决方法
- UILabel/标签视图
- ActiveX编译报错:Please use the /MD switch for _AFXDLL builds
- ios开发 - UIImageView 的contentMode属性应用