博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS-Senior17-UIView动画
阅读量:5261 次
发布时间:2019-06-14

本文共 3539 字,大约阅读时间需要 11 分钟。

一.UIView的基础动画

(代码版容易理解)

1.改变view的frame

@property (nonatomic,strong) UIView *textView;  (可以通过xib进行拖控件实现属性)

//UIView动画有开始beginAnimation,有结束commitAnimation

//第一步 : 开始UIView动画

[UIView beginAnimations : @"move" context : nil];

//第二步 : 设置动画的时长

[UIView setAnimationDuration : 3];

//第三步 : 设置UIView动画的回调代理

[UIView setAnimationDelegate : self];

//第四步 : 设置相关的对象的frame

self.textView.frame = CGRectMake (100,100,300,200);

//第五步 : 结束动画(提交动画)

[UIView commitAnimations];

 

2.改变view的backColor

//第一步 : 开始UIView动画

[UIView beginAnimations : @"color" context : nil];

//第二步 : 设置动画时长

[UIView setAnimationDuration : 0.3];

//第三步 : 设置回调代理

[UIView setAnimationDelegate : self];

//第四步 : 设置要改变的背景颜色

self.textView.backgroundColor = [UIColor yellowColor];

//第五步 : 结束动画

[UIView commitAnimations];

 

3.改变view的alpha

//第一步 : 开始UIView动画

[UIView beginAnimations : @"alpha" context : nil];

//第二步 : 设置时长

[UIView setAnimationsDuration : 0.4];

//第三步 : 设置回调代理

[UIView setAnimationDelegate : self];

//第四步 : 设置要改变的透明度

self.textView.alpha = 0.2;

//第五步 : 结束动画

[UIView commitAnimations];

 

4.仿射----翻转效果

//第一步 : 开始动画

[UIView beginAnimations : @"rotation" context : nil];

//第二步 : 设置动画时长

[UIView setAnimationDuration : 4];

//第三步 : 设置淡入的效果

[UIView setAnimationCurve : UIViewAnimationCurveEaseInOut];

//第四步 : 设置回调代理

[UIView setAnimationDelegate : self];

//第五步 : 设置翻转方向

[UIView setAnimationTransition : UIViewAnimationTransitionFilpFromLeft forView : self.textView cache : YES];

//第六步 : 提交动画

[UIView commitAnimations];

 

4.仿射----旋转效果

//第一步 : 开始动画

[UIView beginAnimations : @"transform" context : nil];

//第二步 : 设置时长

[UIView setAnimationDuration : 3];

//第三步 : 设置回调代理

[UIView setAnimationDelegate : self];

//第四步 : 设置旋转角度

CGAffine Transform transform = CGAffine TransformMakeRotation(3 * M_PI);

//第五步 : 设置旋转角度的对象

[self.textView setTransform : transform];

//第六步 : 结束动画

[UIView commitAnimations];

 

二.UIView的block调用

@property (nonatomic,strong) UIImageView *myImageView;

1.简单动画的实现方法

//第一个参数 : 设置动画时长

//第二个参数 : 动画要显示的效果

//第三个参数 : 动画完成时进行的事情

__weak typeof(self)weakSelf = self;

[UIView animationWithDuraton : 2.0f animations : ^{

//改变imageview的center位置

weakSelf.myImageView.center = self.view.center;

}completion : ^(BOOL finished) {

NSLog (@"海哥的位置变了");

}]; 

}

2.复杂动画的实现方法

//参数1 : 动画时长 参数2 : 动画延迟时间 参数3:动画的枚举值 参数4:要实现的动画效果 参数5:动画完成的时候要干的事情

__weak typeof(self)weakSelf = self;

[UIView animationWithDuration :5.0f delay : 1.0f options : UIViewAnimationOptionTransitionCulUp animations :^{

weakSelf.myImageView.frame = CGRectMake(10,100,100,100);

}completion :^(BOOL finished) {

NSLog(@"sea");

}];

3.关键帧动画的实现方法

//参数1:时长 参数2:延迟时间 参数3:枚举值 参数4:开始动画 参数5: 动画完成时的时候要干的事情

__weak typeof(self)weakSelf = self;

[UIView animateKeyframesWithDuration:2.0f delay:3.0f options:UIViewKeyframeAnimationOptionLayoutSubviews animations:^{

//在这里需要添加一个方法,即创建block的关键帧

//第一个参数:帧动画的开始时间

//第二个参数:帧动画的持续时间

[UIView addKeyframeWithRelativeStartTime:0 relativeDuration:0.5 animations:^{

//在这个里边写要实现的东西

weakSelf.myImageView.center = weakSelf.view.center;

}];

} completion:^(BOOL finished) {

NSLog(@"sea change");

}];

 

三.UIView的Spring动画

@property (nonatomic,strong) UIImageView springImage;

//参数1:动画时长

//参数2:延迟时间

//参数3:类似弹簧的效果值0-1

//参数4:初始化spring的一个速度

//参数5:spring动画的枚举值

//参数6:开始动画

//参数7:动画完成

__weak typeof(self)weakSelf = self;

[UIView animateWithDuration:3.0f delay:0.1f usingSpringWithDamping:1.0 initialSpringVelocity:10 options:UIViewAnimationOptionBeginFromCurrentState animations:^{

weakSelf.springImage.center = weakSelf.view.center;

} completion:^(BOOL finished) {

NSLog(@"mbboy");

 }];

 

 

转载于:https://www.cnblogs.com/zhoulina/p/5532882.html

你可能感兴趣的文章
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
S5PV210根文件系统的制作(一)
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>