iOS开发之ViewControler

原创 2016年08月30日 14:19:56

关于视图控制器
**视图控制器用来控制 view 和 model 之间的交互,在iOS中,用UIViewControler表示视图控制器
此类中有一些特定的方法需要开发者在开发过程中完成
1.初始化方法
2.加载视图的方法**

初始化方法

//下面两个初始化方法,可以重写父类方法,实现自己需要的功能
- (id)init {
    if(self = [super init]){

    }    
    return  self;
}
//带nib文件的初始化方法
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    if(self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]){


    }
    return  self;
}

视图的生命周期
在视图的不同生命周期中,视图控制器会回调不同的方法
一个控制器必须带有一个根视图

//加载视图
- (void)loadView{
    //调用super让父类去帮我们完成一些初始化工作,override重写父类的方法
    [super loadView];

    NSLog(@"加载视图");
}

//在视图控制器已被实例化,还会被加载到内存中的时候,会调用viewDidLoad,这时视图并没有出现。该方法只调用一次。
- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor orangeColor];
    //打印方法名
    NSLog(@"%s",__func__);
}
//以上两种方法在视图控制器类被实例化后,只执行一次。

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];
    NSLog(@"视图将要出现");
}
- (void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];
    NSLog(@"视图已经出现");
}
- (void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];
    NSLog(@"视图将要消失");

}
- (void)viewDidDisappear:(BOOL)animated{

    [super viewDidDisappear:animated];
    NSLog(@"视图已经消失");
}

创建一个button,添加到buttonAction方法

- (IBAction)buttonAction:(UIButton *)sender { 
    NSLog(@"点我");   
    //初始化一个视图控制器
    BViewController *bVC = [[BViewController alloc] initWithNibName:@"BViewController" bundle:[NSBundle mainBundle]];
    //从本视图推送到另一个视图,即bVC控制器所在视图
    [self presentViewController:bVC animated:YES completion:^{
        //完成后实现的方法
        NSLog(@"模态推送完成");
    }];
}
//返回到推送之前的视图,到BViewController类里创建一个按钮并添加到方法
- (IBAction)backAction:(UIButton *)sender {

    NSLog(@"b点我");
    //返回到上一个视图
    [self dismissViewControllerAnimated:YES completion:^{
        //完成后实现的方法
    }];

与UIView有关的属性

- (void)viewDidLoad {
    [super viewDidLoad];

    flag = YES;
    self.view.backgroundColor = [UIColor orangeColor];
    //打印方法名
    NSLog(@"%s",__func__);

    //UIView
    //UIView为所有控件的父类
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 50, 100, 100)];
    //给视图添加背景颜色
    view.backgroundColor = [UIColor blueColor];
    //设置圆角
    view.layer.cornerRadius = 5.0;
    //其它层超出范围的部分隐藏起来
    view.layer.masksToBounds = YES;

    view.layer.borderWidth = 1.0;
    view.layer.borderColor = [UIColor yellowColor].CGColor;

    [self.view addSubview:view];

    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(35, 35, 30, 30)];
    view1.backgroundColor = [UIColor greenColor];
    [view addSubview:view1];
    /*
     理解子视图和父视图的概念
     有且仅有一个父视图
     UIView *superView = view.superview;
     有多个子视图
     NSArray *array = self.view.subviews;

     每个视图都有添加子视图的方法:addSubview
     UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(35, 35, 30, 30)];
     view1.backgroundColor = [UIColor greenColor];
     [view addSubview:view1];

     //关于视图的位置:UIView类给了三个属性:frame  bounds  center
     /*
     frame 和 bounds 的区别
     其中frame是参考父视图的左上角
     而bounds是参考它自己

     */

    NSLog(@"view.frame = %@",[NSValue valueWithCGRect:view.frame]);
    NSLog(@"view.bounds = %@",[NSValue valueWithCGRect:view.bounds]);
    NSLog(@"view.center = %@",[NSValue valueWithCGPoint:view.center]);

    //写一个button
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(10, 200, 100, 300);
    button.backgroundColor = [UIColor greenColor];
    [button setTitle:@"点击" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    //添加点击事件
    [button addTarget:self action:@selector(buttonAction2:) forControlEvents:UIControlEventTouchUpInside];
    //每一个view都有一个tag属性
    view.tag = 1000;

    [self.view addSubview:button];
}

实现视图的移动大小变化及回到原来状态,即用UIView实现简单的动画

- (void)buttonAction2:(UIButton *)sender{
    //通过tag值获得viewDidLoad里的view,是同一个view
    UIView *view = [self.view viewWithTag:1000];
    //BOOL默认为NO,即flag默认为NO,所以在viewDidLoad设置flag值为YES
    if (flag) {
         //表示在2.0秒之内从原来位置移动到指定目标位置,并且逐渐变大    
        [UIView animateWithDuration:2.0 animations:^{
            view.frame = CGRectMake(200, 50, 150, 150);
        }];
    }
    else{
    //表示回到原来状态(位置和大小)
        [UIView animateWithDuration:2.0 animations:^{
            view.frame = CGRectMake(10, 50, 120, 120);
        }];        
    }
    //两个状态,可以想到用BOOL来进行判断
    flag = !flag;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS编程——OC viewController 传值常用方法Delegate和Block的使用

写了个例子,简单介绍了下Delegate和Block的使用,注意点都在注释里,直接上代码了: 1.FirstViewController.h: #import @interface First...
  • wc455287693
  • wc455287693
  • 2015年08月24日 13:05
  • 1624

Objective-C学习之常用的类名(持续更新)

常见的类名 NSPredicate:用于查询,原理和用法都类似于SQL中的where,作用相当于数据库 NSCharacterSet,以及它的可变版本NSMutableCharacterSet,用面向...
  • yxys01
  • yxys01
  • 2016年05月25日 10:47
  • 517

iOS tabbarviewControll的简单使用设置

1 一种是载appdelegate里面设置tabbarviewcontroller,然后利用self。view controllers添加别的view con 2 一种是继承于tabbarviewc...
  • songbai1211
  • songbai1211
  • 2013年05月05日 00:44
  • 1178

iOS开发之ViewControler

关于视图控制器 **视图控制器用来控制 view 和 model 之间的交互,在iOS中,用UIViewControler表示视图控制器 此类中有一些特定的方法需要开发者在开发过程中完成 ...
  • qq_35757299
  • qq_35757299
  • 2016年08月30日 14:19
  • 264

IOS开发之UIViewControler

(1)MVC设计模式 什么是m、v、c M:model,模型(数据) V:view,视图 C:controler,控制器 控制器控制数据在视图上显示 (2)视图控制器的生命周期 1、从in...
  • u012248269
  • u012248269
  • 2015年05月02日 14:32
  • 364

《iOS开发之美》学习笔记

学习资料: iOS开发之美 和凌志著 版次:2014年11月第1版 第1篇 Objective-C语法篇 第1章 iOS开发环境的搭建 第2章 Objective-C编程语言特性 第2篇 ...
  • desirelll
  • desirelll
  • 2016年04月23日 19:04
  • 237

iOS 开发 网络编程详解之基本网络通信过程

基本网络通信模型请求HTTP协议规定:一个完整的由客户端发给服务器的 HTTP 请求 需要包含以下内容 请求行 请求头 请求体(可选)请求行 请求行:指定 请求方法、请求资源路径 以及 HTTP协议...
  • kuangdacaikuang
  • kuangdacaikuang
  • 2016年11月28日 23:13
  • 572

iOS APP启动函数调用顺序~详解

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 一、OC调用 C++ 会为静态创建的对象生成初始化器,与静态语言不同,OC基于Runtime机制可...
  • shihuboke
  • shihuboke
  • 2017年06月30日 00:43
  • 713

iOS应用程序的完整启动过程及其工作原理

1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情: 1> 创建UIApplication对象 2> 创...
  • cuichengjie
  • cuichengjie
  • 2014年10月19日 14:48
  • 348

swift 设置状态栏样式不起作用

不起作用代码: override var preferredStatusBarStyle: UIStatusBarStyle{ return .lightContent } ...
  • weixin_41493577
  • weixin_41493577
  • 2018年01月08日 16:35
  • 20
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发之ViewControler
举报原因:
原因补充:

(最多只允许输入30个字)