UIView Animation
今天总结一下UIView动画就是 UiView动画是基于高层API封装进行封装的,对UIView的属性进行修改时候所产生的动画.
基本动画
下面两种方法是最常用的两种.
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations
animations
修改View属性的Block 下面是支持修改的属性
@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
completion
动画完成block
BOOL finished
表示动画是否完成
继续
+ (void)animateWithDuration:(NSTimeInterval)durationdelay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
delay
延迟执行时间
options
动画效果枚举 ,下面是全部枚举的说明
动画效果相关
UIViewAnimationOptionLayoutSubviews //提交动画的时候布局子控件,表示子控件将和父控件一同动画。UIViewAnimationOptionAllowUserInteraction //动画时允许用户交流,比如触摸UIViewAnimationOptionBeginFromCurrentState //从当前状态开始动画UIViewAnimationOptionRepeat //动画无限重复UIViewAnimationOptionAutoreverse //执行动画回路,前提是设置动画无限重复UIViewAnimationOptionOverrideInheritedDuration //忽略外层动画嵌套的执行时间UIViewAnimationOptionOverrideInheritedCurve //忽略外层动画嵌套的时间变化曲线UIViewAnimationOptionAllowAnimatedContent //通过改变属性和重绘实现动画效果,如果key没有提交动画将使用快照UIViewAnimationOptionShowHideTransitionViews //用显隐的方式替代添加移除图层的动画效果UIViewAnimationOptionOverrideInheritedOptions //忽略嵌套继承的选项
时间函数曲线相关
UIViewAnimationOptionCurveEaseInOut //时间曲线函数,由慢到快UIViewAnimationOptionCurveEaseIn //时间曲线函数,由慢到特别快UIViewAnimationOptionCurveEaseOut //时间曲线函数,由快到慢UIViewAnimationOptionCurveLinear //时间曲线函数,匀速
转场动画相关的
UIViewAnimationOptionTransitionNone //无转场动画UIViewAnimationOptionTransitionFlipFromLeft //转场从左翻转UIViewAnimationOptionTransitionFlipFromRight //转场从右翻转UIViewAnimationOptionTransitionCurlUp //上卷转场UIViewAnimationOptionTransitionCurlDown //下卷转场UIViewAnimationOptionTransitionCrossDissolve //转场交叉消失UIViewAnimationOptionTransitionFlipFromTop //转场从上翻转UIViewAnimationOptionTransitionFlipFromBottom //转场从下翻转
弹簧动画
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)optionsanimations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
dampingRatio
弹簧的阻尼 如果为1动画则平稳减速动画没有振荡。 这里值为 0~1
velocity
弹簧的速率。数值越小,动力越小,弹簧的拉伸幅度就越小。反之相反。比如:总共的动画运行距离是200 pt,你希望每秒 100pt 时,值为 0.5;
例子
[UIView animateWithDuration:2delay:2usingSpringWithDamping:.5initialSpringVelocity:.5options:UIViewAnimationOptionRepeatanimations:^{view.center = self.view.center;
} completion:^(BOOL finished) {
}];
过渡动画
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)optionsanimations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
view
参与转换的视图
例子
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.view addSubview:view];
view.center = self.view.center;
view.backgroundColor = [UIColor redColor];UIView *view_1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
view_1.backgroundColor = [UIColor yellowColor];[UIView transitionWithView:view duration:3 options:UIViewAnimationOptionTransitionCurlUp animations:^{[view addSubview:view_1];
} completion:^(BOOL finished) {
}];
继续
+ (void)transitionFromView:(UIView *)fromViewtoView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^ __nullable)(BOOL finished))completion
fromView
一开始的视图
toView
转换后的视图
例子
UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.view addSubview:baseView];
baseView.center = self.view.center;UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[baseView addSubview:view];
view.backgroundColor = [UIColor redColor];UIView *view_1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view_1.backgroundColor = [UIColor yellowColor];[UIView transitionFromView:viewtoView:view_1 duration:2 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
}];
关键帧动画
+ (void)animateKeyframesWithDuration:(NSTimeInterval)durationdelay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animationscompletion:(void (^ __nullable)(BOOL finished))completion+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations
duration
总持续时间
UIViewKeyframeAnimationOptions options
枚举 下面说明
frameStartTime
相对开始时间
frameDuration
相对持续时间
例子
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 50, 50)];
view.backgroundColor = [UIColor orangeColor];
[self.view addSubview:view];
[UIView animateKeyframesWithDuration:3 delay:3 options:UIViewKeyframeAnimationOptionRepeat animations:^{[UIView addKeyframeWithRelativeStartTime:0 relativeDuration:.3 animations:^{view.frame = CGRectMake(20, 100, 100, 100);}];[UIView addKeyframeWithRelativeStartTime:.3 relativeDuration:.6 animations:^{view.frame = CGRectMake(60, 100, 80, 80);}];[UIView addKeyframeWithRelativeStartTime:.6 relativeDuration:1 animations:^{view.frame = CGRectMake(20, 20, 50, 50);}];} completion:^(BOOL finished) {
}];
UIViewKeyframeAnimationOptions
UIViewKeyframeAnimationOptionLayoutSubviews //提交动画的时候布局子控件,表示子控件将和父控件一同动画。UIViewKeyframeAnimationOptionAllowUserInteraction //动画时允许用户交流,比如触摸 UIViewKeyframeAnimationOptionBeginFromCurrentState //从当前状态开始动画UIViewKeyframeAnimationOptionRepeat //动画无限重复UIViewKeyframeAnimationOptionAutoreverse //执行动画回路,前提是设置动画无限重复UIViewKeyframeAnimationOptionOverrideInheritedDuration //忽略外层动画嵌套的执行时间UIViewKeyframeAnimationOptionOverrideInheritedOptions //忽略嵌套继承的选项关键帧动画独有UIViewKeyframeAnimationOptionCalculationModeLinear //选择使用一个简单的线性插值计算的时候关键帧之间的值。UIViewKeyframeAnimationOptionCalculationModeDiscrete //选择不插入关键帧之间的值,而是直接跳到每个新的关键帧的值。UIViewKeyframeAnimationOptionCalculationModePaced //选择计算中间帧数值算法使用一个简单的节奏。这个选项的结果在一个均匀的动画。UIViewKeyframeAnimationOptionCalculationModeCubic //选择计算中间帧使用默认卡特莫尔罗花键,通过关键帧的值。你不能调整该算法的参数。 这个动画好像会更圆滑一些..UIViewKeyframeAnimationOptionCalculationModeCubicPaced //选择计算中间帧使用立方计划而忽略的时间属性动画。相反,时间参数计算隐式地给动画一个恒定的速度。
剩下两个操作
+ (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray<UIView *> *)viewsoptions:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))parallelAnimations completion:(void (^ __nullable)(BOOL finished))completion+ (void)performWithoutAnimation:(void (NS_NOESCAPE ^)(void))actionsWithoutAnimation
1.删除视图上的子视图 animation
这个枚举只有一个删除值...
views
操作的view 这会让那个视图变模糊、收缩和褪色, 之后再给它发送 removeFromSuperview 方法。
2.在动画block中不执行动画的代码.
例子
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 50, 50)];view.backgroundColor = [UIColor orangeColor];UIView *view_1 = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 20, 20)];[view addSubview:view_1];view_1.backgroundColor = [UIColor redColor];[self.view addSubview:view];[UIView animateKeyframesWithDuration:3 delay:3 options:UIViewKeyframeAnimationOptionRepeat|UIViewKeyframeAnimationOptionAutoreverse animations:^{view.frame = CGRectMake(100, 100, 50, 50);[UIView performWithoutAnimation:^{view.backgroundColor = [UIColor blueColor];}];} completion:^(BOOL finished) {}];[UIView performSystemAnimation:UISystemAnimationDelete onViews:@[view_1] options:0 animations:^{view_1.alpha = 0;} completion:^(BOOL finished) {}];
结束
就先写到这里吧 如果有用的话请点个喜欢..
写了 591 字,被 5 人关注,获得了 4 个喜欢
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
UIView Animation相关推荐
- UIView Animation效果
之前受某人影响以为一连串的UIView Animation 只能这么写: 在某个animation 设置delegate ,然后在 delegate 函数中再调用另一个函数. 今天偷闲决定看 iPho ...
- UIView及其分类的属性方法定义
UIView是iOS开发中最熟悉的控件,不是因为它用得多,而是很多UI控件都是继承它的,了解它的分类方法是很有必要的. UIView其实是由多个分类构成,主要有如下几个分类: UIView :基本属性 ...
- ios uiview动画_iOS UIView动画
ios uiview动画 In this tutorial, we'll be animating our UI Views in various ways in the iOS Applicatio ...
- ios UIView全部API解读
/********* UIView是iOS系统界面元素的基础,所有的界面元素都是集成自它.它本身完全是由CoreAnimation来实现的.它真正的绘图部分,是一个叫CALayer(Core Anim ...
- IOS UIView详解
文章目录 IOS UIView详解 1.官方类分析 2. UIView 常用的属性 2.1 UIView的圆角加阴影效果的实现 2.2 UIView 属性 2.2.1 UIView 几何属性 2.2. ...
- UIView动画初探
UIView常用属性 @interface UIView(UIViewGeometry) @property(nonatomic,getter=isExclusiveTouch) BOOL exclu ...
- iphone开发笔记
1.uiimage图片拉伸 - (void)stretchBackgroundImage {//UIImage *originalImage = [[self backgroundImageForSt ...
- 周报_2012第51周(2012/12/16-2012/12/22)
2012.12.18 Windows Phone 墓碑机制(多任务) Launching和Closing方法在通常情况下使用:例如用返回键退出,或者从程序列表中启动. Activated和Deacti ...
- 一个 bug / Masonry的引入
支持iOS 6/6 Plus的时候碰到这样一个问题: 塞在UITableViewCell里的UIPageControl居中设置失败了,偏右 刚刚设置时下断点查看(6Plus模拟器): <Gray ...
最新文章
- LeetCode简单题之两个数组的交集 II
- jfinal里使用ajax,Jfinal解决AJAX的跨域请求
- 【转载】探索式测试基础系列—生活进阶曲
- Android中的资源复用小技巧
- P2770 航空路线问题(网络流)
- 微信小程序-音频播放-wx.createInnerAudioContext() 每次都是重复播放同一条录音
- 元宇宙“性骚扰”现象频出,Meta推出“个人结界”能保护好女玩家吗?
- 深入理解字符,字符集,gbk,utf8
- 买苹果---动态规划
- java反射机制面试_java反射机制面试题及答案整理,java反射面试题
- 慧都与数据库厂商Devart进一步提升合作层次
- java happen-before_Java happen-before规则
- 【Java】实现多线程计算阶乘(完整版)
- Speedoffice(excel)如何利用SUMIF函数求和
- mysqli _ fetch _ assoc()函数出现警告的原因
- hdoj 4288coder cf 85d Sum of Medians
- python 写文件的疑问
- 丰巢快递柜收费,究竟挑动了我们哪根神经?
- h5网站模板_80个懒人模板网站,我全部整理在这里了
- LeetCode(498):对角线遍历 Diagonal Traverse(Java)
热门文章
- Platform Builder 5下WinCE 5.0目录结构
- 你是如何快捷、高效获取新知识的?
- c语言宏嵌套和展开规则
- grep 正则表达式及选项以及注意
- linux系统proc目录进程信息详解
- C++拾取——使用stl标准库实现排序算法及评测
- 设计模式之外观模式(Facade)摘录
- matlab画多个垂直的线段,新手求助,图形最后多出一条垂直线
- php mysql execute语法_PHP PDOStatement::execute讲解
- phpstorm安装_PHPstorm设置浏览器打开代码