来自 娱乐新闻 2019-09-08 11:20 的文章
当前位置: 藏宝阁玄机资料独家 > 娱乐新闻 > 正文

庆父不死

虹蓝,小福贵能够说是翻开了国产动画的新时期。这一年作者还在上小学,国产有这种神作霸屏,进口动画片有犬夜叉柯南,动画行业算得上是如日方升了。借使及时以这种动向下去,国产动画成为中国的文化一大招牌只是岁月的标题。大家有5000年的历史,诗词,山珍海味,武侠,音乐…这一个难点算是取之不尽 用之矢志不渝。缺憾,短短三三年,市场上充满起了喜羊羊,光头强…能说什么样,哀其不幸怒其不争罢了。

在开首读书Core Animation提供的layer的隐式动画和layer的显式动画在此之前,大家先来计算一下UIView block动画,因为:

  • 在实际上付出中大家用的最多的照旧view,实际不是layer,所以更加的多景况下一旦大家要做动画的话,用的依旧UIView block动画,实际不是layer的隐式动画和出示动画;
  • 这里计算一下,可以一本万利我们在前面两篇学习layer的隐式动画和显式动画时作比较,以期加深对动画的知情。

目录

一、UIView可动画属性列表

二、什么是UIView block动画?

1、UIView block动画的定义、本质及能做什么动画
2、UIView block动画的归类
(1)UIView block基础动画(UIView block属性动画的一种)
①怎么是UIView block基础动画?
②什么行使UIView block基础动画?
(2)UIView block关键帧动画(UIView block属性动画的一种)
①如何是UIView block关键帧动画?
②怎样利用UIView block关键帧动画?
(3)UIView block过渡动画
①怎么是UIView block过渡动画?
②什么运用UIView block过渡动画?

三、怎么样使用UIView block动画?(应用比方)

1、UIView block基础动画譬喻
2、UIView block关键帧动画比如
3、UIView block过渡动画举个例子

一、UIView可动画属性列表

最普通的属性 说明
backgroundColor --
frame 改位置和大小,一般使用transform的平移和缩放来代替
bounds 改大小,一般使用transform的缩放来代替
center 改位置,一般使用transform的平移来代替
显隐性属性 说明
hidden 注意这个属性不支持动画,最简单的可以通过alpha或背景色来代替实现
alpha --
仿射变换属性 说明
transform 可用来做view的平移、缩放、旋转动画

二、什么是UIView block动画?

1、UIView block动画的概念、本质及能做什么样动画
  • 定义:UIView block动画正是用来在view层做动画的一种动画机制

  • 本质:UIView block动画的本色就是对layer的隐式动画或显式动画做了一层封装,提供轻便的Api,方便大家开辟者使用。具体来讲UIView block基础动画是对layer的隐式动画做了包装(因为它们等同能够设置过渡效果/图层行为,展现动画的基础动画不可能安装图层行为,当然显式动画的过渡动画也能够成效于可动画属性,可是前边讲到隐式动画应该会知晓UIView block基础动画是对layer的隐式动画做了包装),UIView block关键帧动画是对layer的显示动画的重要帧动画做了打包,UIView block过渡动画是对layer的来得动画的连接动画做了包装。

  • 能做哪些动画:

    • 上边我们会波及UIView block动画可分为UIView block属性动画和UIView block过渡动画,而UIView block属性动画又可分为UIView block基础动画和UIView block关键帧动画。

    • UIView block属性动画能做哪些动画:那么从UIView的可动画属性列表大家得以旁观,UIView block属性动画能够用来对view做背景观变化的动画片、view显隐性别变化化的卡通以及view的移位、缩放和旋转的仿射转换动画三种现象下的动画片,个中施行一遍UIView block基础动画只好更换多少个属性值三遍,实施二回UIView block关键帧动画能够设置多少个至关心重视要帧所以能更换贰个属性值数次

    • UIView block过渡动画能做哪些动画:UIView block属性动画只可以对UIView的可动画属性做动画,可是若是我们今日想要对view的非动画属性改换时(如label的文本,imageView的图片等)做动画,以至是对view的有个别行为(如view的丰富和移除,多少个view之间切换)做动画,这就不得不使用过渡动画了。

  • 之所以我们也就掌握了为什么要引进UIView block动画:
    • 率先、当然正是UIView block动画是成效于view层,对layer的隐式动画或显式动画做了一层封装,提供不难的Api,方便我们开辟者使用;
    • 其次、UIView block属性动画能够协理我们在改造view的可动画属性时能做动画效果。假设看到后边一篇隐式动画,我们会知道在转移layer的可动画属性时,即使大家怎么都不做直接修改layer的属性值,这些改动的经过也会暗中认可有二个动画片,它正是隐式动画;但是当大家在改变view的可动画属性时,是绝非隐式动画的,假使大家什么样都不做,属性就能够直接跳变到新值,所认为了达成退换view的习性时能有动画,大家就得使用UIView block动画来贯彻了。
    • 其三、UIView block过渡动画能够匡助大家在更改view的不得变属性恐怕对view做一点行为能做动画。
2、UIView block动画的归类

UIView block动画可分为UIView block属性动画和UIView block过渡动画,而UIView block属性动画又可分为UIView block基础动画和UIView block关键帧动画,接下去大家将独家介绍UIView block基础动画UIView block关键帧动画UIView block过渡动画

(1)UIView block基础动画
①如何是UIView block基础动画?

UIView block基础动画是UIView block属性动画的一种,它用来对view的可动画属性做动画,但是实行三遍UIView block基础动画只可以改造三个属性值二遍,因为我们是一次性把属性值直接设置为目的值的(要是要想改造数十三次质量的值,能够在动画甘休后再开始二个基础动画再改贰回属性值,如此循环往复,但有五个更简明的方法就是采纳UIView block关键帧动画,前边会提及)它至关心器重要分上面二种:

  • 最精简的block基础动画
[UIView animateWithDuration:// 动画时长
                 animations:^{

                     // 要改变的属性
                 }];
  • 带来画变成回调的block基础动画
[UIView animateWithDuration:// 动画时长
                 animations:^{

                     // 要改变的属性
                 } completion:^(BOOL finished) {

                     // 动画完成的回调
                 }];
  • 可设置延时和自定义动画过渡效果的block基础动画
[UIView animateWithDuration:// 动画时长
                      delay:// 延时多长时间后开始执行动画
                    options:// 可自定义动画的过渡效果,来替换掉系统默认的平滑过渡效果
                 animations:^{

                     // 要改变的属性
                 } completion:^(BOOL finished) {

                     // 动画完成的回调
                 }];

UIView block基础动画自定义过渡效果(UIViewAnimationOptions)枚举值如下:

  • 貌似就安装下连片动画效果和对接动画时间曲线就可以了;

  • 若是和前面layer显式动画的连接动画的type和subType相比一下,会意识此处的交接动画效果是把layer显式动画的衔接动画的type和subType组合起来了,何况这里的连通动画效果要比layer显式动画的对接动画的效能少得多,唯有淡入淡出、正面背面二维翻转、翻页效果三种而已。

UIViewAnimationOptionTransitionNone// 过渡动画效果:不使用过渡动画
UIViewAnimationOptionTransitionCrossDissolve//过渡动画效果:淡入淡出效果,和显示动画的过渡动画的“fade”一样
UIViewAnimationOptionTransitionFlipFromTop// 过渡动画效果:正面和背面的二维翻转效果,从上向下翻转
UIViewAnimationOptionTransitionFlipFromLeft// 过渡动画效果:正面和背面的二维翻转效果,从左向右翻转
UIViewAnimationOptionTransitionFlipFromBottom// 过渡动画效果:正面和背面的二维翻转效果,从下向上翻转
UIViewAnimationOptionTransitionFlipFromRight//过渡动画效果:正面和背面的二维翻转效果,从右向左翻转
UIViewAnimationOptionTransitionCurlUp// 过渡动画效果:翻页效果,从下往上翻页
UIViewAnimationOptionTransitionCurlDown// 过渡动画效果:翻页效果,从上往下翻页

UIViewAnimationOptionCurveEaseInOut// 过渡动画的缓冲曲线:动画慢进,逐渐加快,逐渐减慢,慢出(默认值)
UIViewAnimationOptionCurveEaseIn// 过渡动画的缓冲曲线:动画慢进,逐渐加快
UIViewAnimationOptionCurveEaseOut// 过渡动画的缓冲曲线:动画逐渐减慢,慢出
UIViewAnimationOptionCurveLinear// 过渡动画的缓冲曲线:动画匀速

UIViewAnimationOptionRepeat// 重复执行动画
UIViewAnimationOptionAllowUserInteraction// 执行动画期间,开启view的用户交互

UIViewAnimationOptionAutoreverse// 执行动画回路
UIViewAnimationOptionLayoutSubviews// 执行动画时布局子控件
UIViewAnimationOptionAllowAnimatedContent// 执行动画时重绘视图
UIViewAnimationOptionBeginFromCurrentState// 从当前状态开始执行动画
UIViewAnimationOptionShowHideTransitionViews// 显示视图时显示或隐藏而不是移除或添加
UIViewAnimationOptionOverrideInheritedOptions// 不继承父动画设置
UIViewAnimationOptionOverrideInheritedCurve// 忽略嵌套动画的曲线设置
UIViewAnimationOptionOverrideInheritedDuration// 忽略嵌套动画的执行时间设置
  • Spring动画:就是指在更动属性的时候,属性值会在对象值周围摆动,类似弹簧这种的弹性动画
[UIView animateWithDuration:// 动画时长
                      delay:// 延时多长时间后开始执行动画
     usingSpringWithDamping:// 弹性效果的阻尼:范围0~1,数值越小弹性效果越明显,震得越久才能停下来
      initialSpringVelocity:// 弹性效果的初始速度:数值越大开始弹性动画时初始速度越快
                    options:// 可自定义动画的过渡效果,来替换掉系统默认的平滑过渡效果
                 animations:^{

                     // 要改变的属性
                 } completion:^(BOOL finished) {

                     // 动画完成的回调
                 }];
②如何使用UIView block基础动画?

咱俩只必要在UIView block基础动画的animationsblock里直接把可动画属性退换为目标值就足以了。

(2)UIView block关键帧动画
①什么是UIView block关键帧动画?

地点谈到了UIView block基础动画是UIView block属性动画的一种,而那边的UIView block关键帧动画也是UIView block属性动画的一种,它也是用来对view的可动画属性做动画的,只然而效果兴许在某个场景下比基础动画要有助于只怕加上一些,可是试行一次UIView block关键帧动画能够安装几个重要帧所以能改动三个属性值多次,而不是三遍性把属性值设置指标值

内需小心的是:UIView block关键帧动画设置首要帧只可以透过扩张关键帧方法来安装,也就是layer显示动画的显要帧动画的数组关键帧法,这些是不支持路线关键帧法的。

  • UIView block关键帧动画
[UIView animateKeyframesWithDuration:// 动画时长
                               delay:// 延时多长时间后开始执行动画
                             options:// 可自定义动画的过渡效果,来替换掉系统默认的平滑过渡效果
                          animations:^{

                              // 添加关键帧
                          } completion:^(BOOL finished) {

                              // 动画完成的回调
                          }];

UIView block关键帧自定义过渡效果(UIViewKeyframeAnimationOptions)枚举值如下:

  • 相似就安装下连着动画的演算方式就足以了,或许直接行使私下认可即可了。
UIViewKeyframeAnimationOptionCalculationModeLinear// 运算模式:连续,默认
UIViewKeyframeAnimationOptionCalculationModeDiscrete// 运算模式:离散
UIViewKeyframeAnimationOptionCalculationModePaced// 运算模式:均匀执行
UIViewKeyframeAnimationOptionCalculationModeCubic// 运算模式:平滑
UIViewKeyframeAnimationOptionCalculationModeCubicPaced// 运算模式:平滑均匀

UIViewKeyframeAnimationOptionRepeat = UIViewAnimationOptionRepeat// 重复执行动画
UIViewKeyframeAnimationOptionAllowUserInteraction = UIViewAnimationOptionAllowUserInteraction// 执行动画期间,开启view的用户交互

UIViewKeyframeAnimationOptionAutoreverse = UIViewAnimationOptionAutoreverse// 执行动画回路
UIViewKeyframeAnimationOptionLayoutSubviews = UIViewAnimationOptionLayoutSubviews// 执行动画时布局子控件
UIViewKeyframeAnimationOptionBeginFromCurrentState = UIViewAnimationOptionBeginFromCurrentState// 从当前状态开始执行动画
UIViewKeyframeAnimationOptionOverrideInheritedOptions  = UIViewAnimationOptionOverrideInheritedOptions// 不继承父动画设置
UIViewKeyframeAnimationOptionOverrideInheritedDuration = UIViewAnimationOptionOverrideInheritedDuration// 忽略嵌套动画的执行时间设置
  • 扩展关键帧的不二等秘书籍
[UIView addKeyframeWithRelativeStartTime:// 这一帧动画开始的时间点(占总时间的比例)
                        relativeDuration:// 这一帧动画的动画时长(占总时间的比例)
                              animations:^{

                                  // 要改变的属性
                              }];
②如何采用UIView block关键帧动画?

我们只须求在UIView block第一帧动画的animationsblock里直接扩充关键帧就能够了,再在加多关键帧方法的animationsblock里把可动画属性改造为目的值就能够了。

(3)UIView block过渡动画
①怎么着是UIView block过渡动画?

前边大家上学了UIView block基础动画和UIView block关键帧动画,但咱们知晓它俩实际上都以UIView block属性动画,即只可以用来对view的可动画属性做动画。那么一旦我们前日想要对view的非动画属性改动时(如label的文件,imageView的图形等)做动画,以致是对view的一点行为(如view的丰裕和移除,多个view之间切换)做动画,那就只可以使用联网动画了。

何况大家也得以观察,上边UIView block基础动画和UIView block关键帧动画的一些方法里也提供了连片效果十分配置,也正是说过渡动画也是足以功能于可动画属性的,但是仍是可以做可动画属性之外的洋洋效益。

对接动画的连片效果可参见UIView block基础动画的连接效果,是千篇一律的。

  • 给单个视图的不可动画属性或视图行为加多过渡动画
[UIView transitionWithView:// 要做动画的视图
                  duration:// 动画时长
                   options:// 过渡动画效果
                animations:^{

                    // 要改变的不可动画属性或图层行为
                } completion:^(BOOL finished) {

                    // 动画完成的回调
                }];
  • 给八个视图切换时增多过渡动画

注意:

  • 这么些主意的接入效果是反映在fromView和toView的父视图上的
  • 这么些方法无需提前把fromView和toView都添在父视图上,只须求先增多fromView就能够了
  • 其一措施在动画进度中,会自行把fromView会从父视图中移除,并把toView增添到父视图上
[UIView transitionFromView:// 旧视图
                    toView:// 新视图
                  duration:// 动画时长
                   options:// 动画过渡效果
                completion:^(BOOL finished) {

                    // 动画完成时的回调
                }];
②什么利用UIView block过渡动画?

咱俩只需求基于气象是改造单个视图的不可动画属性或视图行为要增添过渡动画还是给三个视图切换时增添过渡动画挑选相应的方法就足以了。

三、UIView的block动画应用比如

1、UIView block基础动画
  • 让一条弹幕从右往左飘过去
    (清单1.1)
//
//  ViewController.m
//  CoreAnimation
//
//  Created by 意一yiyi on 2017/11/13.
//  Copyright © 2017年 意一yiyi. All rights reserved.
//

#import "ViewController.h"

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@interface ViewController ()

@property (strong, nonatomic) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.label = [[UILabel alloc] init];
    self.label.backgroundColor = [UIColor magentaColor];
    self.label.frame = CGRectMake(kScreenWidth, 100, kScreenWidth, 30);
    self.label.text = @"嘿Siri,你在哪儿?";
    [self.view addSubview:self.label];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [UIView animateWithDuration:5 animations:^{

        self.label.transform = CGAffineTransformMakeTranslation(-kScreenWidth, 0);
    }];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
  • 漂完之后,我们转移下弹幕内容
    (清单1.2)
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [UIView animateWithDuration:5 animations:^{

        self.label.transform = CGAffineTransformMakeTranslation(-kScreenWidth, 0);
    } completion:^(BOOL finished) {

        self.label.text = @"你在哪儿,我就在哪儿!";
    }];
}
  • 小编们能够让弹幕匀速地飘过,实际不是暗许的easyInEasyOut
    (清单1.3)
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [UIView animateWithDuration:3 delay:0 options:(UIViewAnimationOptionCurveLinear) animations:^{

        self.label.transform = CGAffineTransformMakeTranslation(-kScreenWidth, 0);
    } completion:^(BOOL finished) {

        self.label.text = @"你在哪儿,我就在哪儿!";
    }];
}
  • 让弹幕弹一弹
    (清单1.4)
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [UIView animateWithDuration:3 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:5 options:(UIViewAnimationOptionCurveLinear) animations:^{

        self.label.transform = CGAffineTransformMakeTranslation(-kScreenWidth, 0);
    } completion:^(BOOL finished) {

        self.label.text = @"你在哪儿,我就在哪儿!";
    }];
}

图片 1

1.gif

2、UIView block关键帧动画

类似FaceBook登陆分界面,登录失利这种输入框抖动的功力。借使使用基础动画的话,恐怕就得平移一遍,再开三个基础动画再平移一回,得开许多少个基础动画,关键帧动画的话就开叁个卡通就足以了,添关键帧就行了。

(清单1.5)

//
//  ViewController.m
//  CoreAnimation
//
//  Created by 意一yiyi on 2017/11/13.
//  Copyright © 2017年 意一yiyi. All rights reserved.
//

#import "ViewController.h"

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@interface ViewController ()

@property (strong, nonatomic) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.label = [[UILabel alloc] init];
    self.label.backgroundColor = [UIColor cyanColor];
    self.label.frame = CGRectMake(0, 100, kScreenWidth, 30);
    self.label.text = @"请登录";
    [self.view addSubview:self.label];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    self.label.text = @"登录失败";

    [UIView animateKeyframesWithDuration:0.5 delay:0 options:(UIViewKeyframeAnimationOptionCalculationModePaced) animations:^{

        [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:1/4.0 animations:^{

            self.label.transform = CGAffineTransformMakeTranslation(10, 0);
        }];
        [UIView addKeyframeWithRelativeStartTime:1/4.0 relativeDuration:1/4.0 animations:^{

            self.label.transform = CGAffineTransformMakeTranslation(-10, 0);
        }];
        [UIView addKeyframeWithRelativeStartTime:2/4.0 relativeDuration:1/4.0 animations:^{

            self.label.transform = CGAffineTransformMakeTranslation(10, 0);
        }];
        [UIView addKeyframeWithRelativeStartTime:3/4.0 relativeDuration:1/4.0 animations:^{

            self.label.transform = CGAffineTransformMakeTranslation(0, 0);
        }];
    } completion:^(BOOL finished) {

        NSLog(@"动画结束了");
    }];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

图片 2

1.gif

3、UIView block过渡动画
(1)给单个视图的不可动画属性或视图行为增添过渡动画
  • 切换imageView的图形和label的文件

(清单1.6)

//
//  ViewController.m
//  CoreAnimation
//
//  Created by 意一yiyi on 2017/11/13.
//  Copyright © 2017年 意一yiyi. All rights reserved.
//

#import "ViewController.h"

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@interface ViewController ()

@property (strong, nonatomic) UIImageView *imageView;
@property (strong, nonatomic) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.imageView = [[UIImageView alloc] init];
    self.imageView.frame = CGRectMake(0, 64, kScreenWidth, kScreenWidth);
    self.imageView.image = [UIImage imageNamed:@"0.jpg"];
    [self.view addSubview:self.imageView];

    self.label = [[UILabel alloc] init];
    self.label.frame = CGRectMake(0, kScreenWidth + 100, kScreenWidth, 30);
    self.label.text = @"奥黛丽赫本";
    self.label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:self.label];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    NSInteger num = arc4random()%7;

    // 改变imageView的图片,淡入淡出效果
    [UIView transitionWithView:self.imageView duration:3 options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear) animations:^{

        self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", num]];
    } completion:nil];

    // 改变label的文本,二维翻转效果
    [UIView transitionWithView:self.label duration:3 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionCurveLinear) animations:^{

        switch (num) {
            case 0:
                self.label.text = @"奥黛丽·赫本";
                break;
            case 1:
                self.label.text = @"苏菲·玛索";
                break;
            case 2:
                self.label.text = @"泰勒·斯威夫特";
                break;
            case 3:
                self.label.text = @"安妮·海瑟薇";
                break;
            case 4:
                self.label.text = @"娜塔丽·波特曼";
                break;
            case 5:
                self.label.text = @"凯拉·奈特利";
                break;
            case 6:
                self.label.text = @"杰西卡·阿尔芭";
                break;
        }
    } completion:nil];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

图片 3

1.gif

  • 淡入淡出的功效增多view
    (清单1.7)
//
//  ViewController.m
//  CoreAnimation
//
//  Created by 意一yiyi on 2017/11/13.
//  Copyright © 2017年 意一yiyi. All rights reserved.
//

#import "ViewController.h"

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@interface ViewController ()

@property (strong, nonatomic) UIImageView *imageView;
@property (strong, nonatomic) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.imageView = [[UIImageView alloc] init];
    self.imageView.frame = CGRectMake(0, 64, kScreenWidth, kScreenWidth);
    self.imageView.image = [UIImage imageNamed:@"0.jpg"];

    self.label = [[UILabel alloc] init];
    self.label.frame = CGRectMake(0, kScreenWidth + 100, kScreenWidth, 30);
    self.label.text = @"奥黛丽赫本";
    self.label.textAlignment = NSTextAlignmentCenter;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [UIView transitionWithView:self.view duration:3 options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear) animations:^{

        [self.view addSubview:self.imageView];
        [self.view addSubview:self.label];
    } completion:nil];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

图片 4

1.gif

(2)给三个视图切换时增添过渡动画
  • 比如说切换登入和登记视图(当然那个也可以UIViewController的艺术来替换,有一致的意义)

图片 5

1.gif

本文由藏宝阁玄机资料独家发布于娱乐新闻,转载请注明出处:庆父不死

关键词: