iOS 开发学习之 User Interface(4)UIView 与 UIViewController【一】

UIViewController 与 UIView

    self.view -> UIView : 根视图

    一个界面上的UI是添加到self.view上,是self.view的直接或间接的子视图。

    回顾: window.rootViewController

——————————————————————————————

UIViewController

   视图控制器

   作用:提供了基本的属性或方法用来管理应用程序的视图。

    一个视图控制器管理一组构成一个用户界面的视图。包括加载,排列视图,与视图的交互,协调与数据的响应。除此之外,还处理与其他视图控制器的交互。

    一般情况下,不会直接创建UIViewController的实例,而是实例话它的子类。

——————————————————————————————

创建UIView

    初始化:

      initWithFrame:

    基本属性:

      .backgroundColor

      .hidden                       // 是否隐藏

      .alpha                         // 透明度 0~1

      .layer

      .clipsToBounds

——————————————————————————————

      .frame                        // 当前视图相对于(直接)父视图的位置和大小

      .bounds                      // 当前视图相对于自己的位置和大小

      .center                       // 当前视图的中心点相对于父视图的位置

      .transform                  // 形变属性,改变视图的平移,缩放比例,旋转角度等

——————————————————————————————  

      .tag                           // 视图的标识

      .userInteractionEnable  // 是否允许视图接收用户交互,默认为YES

      方法:

        视图间的层次,通过addSubview:使一个视图成为另一视图的子视图。一个视图只能有一个父视图,也就是说:当一个视图经过[aView addSubview:],[bView addSubview:]后,它的父视图是bView。

       viewWithTag:                                                // 通过视图标识获取视图对象

       addSubview:                                                 // 添加子视图

       removeFromSuperview                                   // 子视图从父视图脱离

       bringSubviewToFront:                                    //  将某一子视图移动到其父视图最上层

       insertSubview:atIndex:                                   //  将某一子视图插入到指定层级索引

       insertSubview:aboveSubview:                         //  将某一子视图插入到某一子视图之上

       insertSubview:belowSubview:                         //  将某一子视图插入到某一子视图之下

       exchangeSubviewAtIndex:withSubviewAtIndex:  //  交换两个子视图的层级索引

——————————————————————————————

父子视图间的自适应

    父视图缩放时,子视图的位置,大小也随之变化。

    父视图.autoresizesSubviews        //  设置子视图们是否可适应父视图的变化                     

    子视图.autoresizingMask             //  设置子视图适应父视图的模式

例:

//设置uv 随子视图的变化而变化

    uv.autoresizesSubviews = YES;

    //设置uv 的子视图label 以何种模式适应父视图uv 的变化,带位移的枚举可用 |

//    lb.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    lb.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

——————————————————————————————

UIView的图层:CALayer

    任何一个视图都是由一个主图层+多个子图层构成。

    UIView 对象.layer : 是主图层

    UIView 绘图部分是由CALayer进行,UIView是CALayer的管理器

——————————————————————————————

动画

    在iOS中动画,分属在两个框架下:UIKit 和 Quartz Core, 分别是在UIView 和 CALayer 上进行操作。前者是后者的封装。

[工程]:UIViewAnimation

    a. UIView 级别的动画(封装度高,代码简单,灵活度低)

       设置视图属性在一段时间内的变化值,一般只需要设置开始,结束值即可。

        方法一及步骤:

+ beginAnimations:context:                        // 开始一个动画块

         + setAnimationDuration:                             // 设置动画持续时间

         + setAnimationDelay:                                 // 设置动画延时

         + setAnimationRepeatCount:                      // 设置动画重复次数

         + setAnimationCurve:                               //  设置动画曲线样式

         + setAnimationTransition:forView:cache:     //  在动画块期间为视图设置过渡

         //…这里设置要变化的视图属性,如frame

         + commitAnimations                               // 提交一个动画块

——————————————————————————————

方法二:(使用block对象)

         + animateWithDuration:delay:options:animations:completion: // 使用指定的持续时间,延时,选项,提交动画块,动画完成块 实现动画;transform


[工程]: CALayerAnimation        

    b. CALayer级别的动画 (直接操作图层,代码稍复杂,灵活度高)

       由 Core Animation (核心动画,简称 CA) 实现,直接作用于CALayer, 对于 UIView级别的动画,底层实际上也是由CA实现。

       CA下的动画类:CAAnimation 是所有动画类的父类,不能直接使用,使用其子类。

       可以使用的子类有:CABasicAnimation, CAKeyframeAnimation , CAAnimationGroup, CATransition.

       

       >> CATransition 创建动画

       方法及步骤:

       [CATransition animation]           // 创建动画对象

       setDuration:                             // 动画持续时间

       setType:                                  // 动画类型

       setSubtype:                              // 动画方向

       .layer addAnimation:forKey:        // 将动画对象添加到图层CALayer上


——————————————————————————————





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值