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开发之ViewControler

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

iOS透明viewControler

有时候在跳转控制器的时候需要,跳转到当前控制器上方,显示一个可以看到下方原来控制器的半透明控制器。 跳转方式可以修改这句代码来实现,激变,从下往上。或者也可以自定义一些动画。(已经被我注释掉的那些)c...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

IOS开发之TabBarItem&NavigationBarItem

想必大家都用过微信,微信间的页面切换是如何做成的呢?接下来我们用storyboard结合着代码来模拟一下微信的视图控制模式。   "工欲善其事,必先利其器",下面主要是对storyboard来进行我...

iOS开发之NSRunLoop概述

iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很...

[IOS开发]IOS开发之推送

最近的项目中使用到了推送,第一次搞推送,遇到了不少坑,所以记录下来。 参考:手把手教你做IOS推送 首先是一些基础知识 APNS的推送机制 首先我们看一下苹...

IOS中APP开发之路

现在移动APP正式急速上升的趋势,然而占据着主要地位的还是这2大巨无霸:谷歌的Android与苹果的ios系统。那么,作为 程序员了解一下APP的开发流程思路是有所必要的,特别是正流行火热的APP市场...

iOS 开发之 Cocoapods

什么是Cocoapods   在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest、AFNetworking、JSONKit等。使用这些第三方类库能极大的方便项目的...

iOS开发之Swift

iOS开发之SwiftiOS开发之SwiftiOS开发之SwiftiOS开发之Swift

iOS 开发之 UIView

一.视图    1. iphone手机上的窗口就是UIWindow类的一个实例(1个手机应用只有一个UIWindow)。    2.UIView类用于实现视图。     &...

IOS开发之UITouch

手指在屏幕上能达到的精度和鼠标指针有很大的不同。当用户触击屏幕时,接触区域实际上是椭圆形的,而且比用户想像的位置更靠下一点。根据触摸屏幕的手指、手指的尺寸、手指接触屏幕的力量、手指的方向、以及其它因素...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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