• 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             //  设置子视图适应父视图的模式

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

    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上

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

  • 相关阅读:
    SpringCloud入门须知
    24SQL FOREIGN KEY 约束
    23SQL PRIMARY KEY 约束
    python之一列表集合转为字典
    DesktopSwitcher 开发
    Distribute the App on the Website
    Apple Developer账号申请
    后端——框架——视图层框架——spring mvc——注解
    后端——框架——视图层框架——spring mvc——数据(校验,转换,格式化)
    后端——框架——视图层框架——spring mvc——ExceptionResolver
  • 原文地址:https://www.cnblogs.com/arlenliu/p/5135740.html
Copyright © 2020-2023  润新知