UIWindow,UINavigationController与UIViewController之间的关系

UIWindow,UINavigationController与UIViewController之间的关系

虽然每次你都用UINavigationController与UIWindow,但你不一定知道他们之间到底怎么运作的哦:)

AppDelegate.h的代码

RootViewController.m

//
//  RootViewController.m
//  UIWindow
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"

#define VALUE  1

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor redColor];

    UITapGestureRecognizer *tap = \
    [[UITapGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(tapEvent:)];

    [self.view addGestureRecognizer:tap];
}

- (void)tapEvent:(UITapGestureRecognizer *)gesture
{
    static int flag = 1;
    if (flag)
    {
        // 初始化3D变换,获取默认值
        CATransform3D perspectiveTransform = CATransform3DIdentity;

        // 缩放变换
        perspectiveTransform = CATransform3DScale(perspectiveTransform, 0.75, 0.75, 0.75);

        [UIView animateWithDuration:0.3 animations:^{
            if (VALUE)
            {
                // 导航控制器的view
                self.navigationController.view.transform = \
                    CATransform3DGetAffineTransform(perspectiveTransform);
            }
            else
            {
                // 自身controller的view
                self.view.transform = CATransform3DGetAffineTransform(perspectiveTransform);
            }
        }];

        flag = 0;
    }
    else
    {
        // 初始化3D变换,获取默认值
        CATransform3D perspectiveTransform = CATransform3DIdentity;

        // 缩放变换
        perspectiveTransform = CATransform3DScale(perspectiveTransform, 1, 1, 1);

        [UIView animateWithDuration:0.3 animations:^{
            if (VALUE)
            {
                // 导航控制器的view
                self.navigationController.view.transform = \
                    CATransform3DGetAffineTransform(perspectiveTransform);
            }
            else
            {
                // 自身controller的view
                self.view.transform = CATransform3DGetAffineTransform(perspectiveTransform);
            }
        }];

        flag = 1;
    }
}

@end

VALUE = 1 的时候与 VALUE = 0 的时候

他们的关系其实非常简单.

UIWindow  ---> UINavigationController  --->  UIViewController,

有时候,我们需要做缩放动画的效果,或者是转场动画的效果,不理解他们之间细微的差距,是没办法处理好的.

他们之间的关系:

知道了这些原理,再写一个侧边栏,实在是太简单了:).

 

时间: 2024-08-31 07:06:01

UIWindow,UINavigationController与UIViewController之间的关系的相关文章

总结java实现八大排序算法及之间的关系

8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如此反复循环,直到全部排好顺序. (2)实例 (3)用java实现 [java] view plaincopy package com.njue; public class insertSort { public insertSort(){ inta[]={49,38,65,97,76,13,27,

slf4j-api、slf4j-log4j12以及log4j之间的关系

几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api.slf4j-log4j12还有log4j是什么关系?      slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade.Facade门面,更底层一点说就是接口.它允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统.更直观一点,slf4j是个数据线,一端嵌入程序,另一端链接日志系统,从而实现将

UIView的alpha、hidden和opaque属性之间的关系和区别[转]

UIView的alpha.hidden和opaque属性之间的关系和区别 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/10076323 转载请注明出处   UIView的这几个属性让我困惑了好一阵子,通过翻看官方文档和stackoverflow等网上资源,对它们有了一定理解,现分享出来.如理解有误,还请大家指出.   一.alpha 液晶显示器是由一个个的像素点组成的,每个像素点都可以显示一个由RGBA颜色空间组成

XML和数据库之间的关系

xml|数据|数据库  1.0 简介    本论文简要的探讨了XML和数据库之间的关系,同时列出一些可以使用数据库处理XML文档的软件. 虽然这里不打算详尽地介绍这些软件,但是笔者希望它能够描述使用数据库处理XML文档中的主要部分.这里有点偏向与关系数据库,因为我的经验如此.     2.0 XML是数据库吗?     在开始讨论XML和数据库之前,我们需要回答一个萦绕在很多心头的问题: "XML是数据库吗?"在严格意义上将,如果"XML"是指XML文档时,答案是&

构架、框架、设计模式之间的关系简述

设计 一.软件体系结构和框架的定义 软件体系结构的英文单词是"architecture". Architecture的基本词义是建筑.建筑学.建筑风格. 软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义. <设计模式>中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计. 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型.框架的作用在

中文Access2000速成教程--1.8 定义表之间的关系

access|教程|速成|中文 第八讲 定义表之间的关系 前面定义了主键,以及相应的表后,就可以制定各表部的关系,从而建立起一个关系数据库.的应用与管理关系数据库,中文Access 2000具有很强的能力,这正是中文Visual FoxPro 6与中文Excel 2000所不及的.为了建立关系数据库,首先要建立好各相关表,接着将它们全部关闭,即可按下列步骤进行操作. 注意:中文Access 2000不能在已打开的表之间创建或修改关系,所以要关闭所有打开的表,这与中文Visual FoxPro 6

浅谈网站优化之新访客和老访客之间的关系

我们都知道现在大部分网站我们都依靠搜索引擎,我们不断的优化.不断的提高访问量,当我们网站IP逐步增高的同时我们沉浸在胜利的喜悦中,可我们却忽略新访客增加的数据和老访客增加的数据不成比例!这就要我们思考的问题了,所以做为一个站长我们对数据的分析不能忽视!下面我就来简单探讨下网站新访客和老访客之间的关系!   (上图为网站A 数据来源:百度统计 截图后为方便大家看做成了一张图片)   (上图为网站B 数据来源:百度统计 截图后为方便大家看做成了一张图片) 上面2个图片,分别为网站A 网站B,在这里笔

探讨网站权重与关键字权重之间的关系

探讨:网站权重与关键字权重之间的关系,我们知道对于一个网站而言,其关键字可以是几个,十几个,也或者是几十个,甚至上百个,网站的规模似乎也就决定了网站关键字的数量多少,一般对于一个企业站而言,其会有3~5个目标关键词,除了这些目标关键词之外,剩下的就是一定数量的长尾关键词. 下面我们来看看关键字排名是如何进行的:一般网站相关优化流程是,先选择目标关键词来做,对一部分目标关键词进行站内文章,站外外链等,通常需要做哪一个关键词就会对某一个关键词进行优化,从这种意义上来讲,其目的就是提高此关键词在整个网

敏捷与结构性模块化(一) 探讨结构性模块化和敏捷之间的关系

1 简介 敏捷开发方法论日益流行,然而大多数"敏捷"专家和分析师都在孤立地讨论敏捷,也就是说忽视了系统"结构"(Kirk Knoernschild是一个例外,他编写了一本名为<Java Application Architecture>的图书阐述这一理念).考虑到"敏捷"是基础实体的一个重要特性或属性,那么,这种疏忽令人感到很惊讶.一个实体要具有"敏捷"的特性,它必须具有高度的结构性模块化(structural m