前言

本文主要给大家介绍的关于利用iOS开发实现翻转*牌动画的方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧。
动画效果
实现原理
实现原理就是创建三个*牌pockerView , 先在*牌上添加一个imageview,作为牌的背面。然后实现翻转动画,在翻转的时候将imageview移除,添加另一个imageview作为正面。
核心代码:
方法一: 翻转动画,内部实现还是方法二
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
方法二 :UIView动画
[UIView beginAnimations:@"aa" context:nil]; [UIView setAnimationDuration:_duration]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [view.imgview1 removeFromSuperview]; [view addSubview:view.imgview2]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view cache:NO]; [UIView commitAnimations];
完整代码:
ViewController.m文件代码
#import "ViewController.h"
#import "PockerView.h"
@interface ViewController ()
// 记录翻第几张牌
@property(nonatomic,assign)NSInteger index;
// 动画时间
@property(nonatomic,assign)CGFloat duration;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
_duration = 0.5;
_index = 0;
NSArray *arr = @[@"2.jpg",@"3.jpg",@"4.jpg"];
// 循环创建3张*牌
for (int i = 0; i < 3; i++) {
PockerView *pocker = [[PockerView alloc]initWithFrame:CGRectMake(100 + 80 * i, 100, 100, 150) imageName:arr[i]];
pocker.tag = 1000 + i;
[self.view addSubview:pocker];
}
}
// 点击空白处触发
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// 执行动画
[self executeAnimation];
}
// 执行动画
- (void)executeAnimation{
// 根据tag值取到*牌
PockerView *pocker = [self.view viewWithTag:1000+ _index];
// 方法一
[self animationWithView:pocker];
// 方法二
// [self rotateWithView:pocker];
}
// 翻牌动画方法一(内部实现还是方法二)
- (void)animationWithView:(PockerView *)view{
// 延时方法 正在翻转的牌翻转一半的时候把它移到视图最上面来
[self performSelector:@selector(delayAction:) withObject:view afterDelay:_duration / 2];
// 翻转动画
UIViewAnimationOptions option = UIViewAnimationOptionTransitionFlipFromLeft;
[UIView transitionWithView:view duration:_duration
options:option
animations:^ {
[view.imgview1 removeFromSuperview];
[view addSubview:view.imgview2];
}
completion:^(BOOL finished){
_index++;
if (_index < 3) {
[self executeAnimation];
}
}];
}
// 延时方法
- (void)delayAction:(UIView *)view{
[self.view bringSubviewToFront:view];
}
- (void)delayAction2{
_index++;
if (_index < 3) {
[self executeAnimation];
}
}
// 方法二
- (void)rotateWithView:(PockerView *)view{
[self performSelector:@selector(delayAction:) withObject:view afterDelay:_duration / 2];
[self performSelector:@selector(delayAction2) withObject:nil afterDelay:_duration];
[UIView beginAnimations:@"aa" context:nil];
[UIView setAnimationDuration:_duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[view.imgview1 removeFromSuperview];
[view addSubview:view.imgview2];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view cache:NO];
[UIView commitAnimations];
}
@end
PockerView.h文件代码
// // PockerView.h // 翻牌 // // Created by 斌 on 2017/4/20. // Copyright © 2017年 斌. All rights reserved. // #import <UIKit/UIKit.h> @interface PockerView : UIView @property(nonatomic,strong)UIImageView *imgview1; @property(nonatomic,strong)UIImageView *imgview2; - (instancetype)initWithFrame:(CGRect)frame imageName:(NSString *)imageName; @end
PockerView.m文件代码
//
// PockerView.m
// 翻牌
//
// Created by 斌 on 2017/4/20.
// Copyright © 2017年 斌. All rights reserved.
//
#import "PockerView.h"
@implementation PockerView
- (instancetype)initWithFrame:(CGRect)frame imageName:(NSString *)imageName{
self = [super initWithFrame:frame];
if (self) {
// 设置阴影
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOffset = CGSizeMake(-10, 0);
self.layer.shadowOpacity = 0.3;
// 牌的背面
self.imgview1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
_imgview1.backgroundColor = [UIColor redColor];
_imgview1.image = [UIImage imageNamed:@"1.jpeg"];
[self addSubview:_imgview1];
self.imgview1.layer.cornerRadius = 10;
self.imgview1.clipsToBounds = YES;
self.imgview1.layer.borderWidth = 5;
self.imgview1.layer.borderColor = [[UIColor whiteColor] CGColor];
// 牌的正面
self.imgview2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
_imgview2.backgroundColor = [UIColor redColor];
_imgview2.image = [UIImage imageNamed:imageName];
self.imgview2.layer.cornerRadius = 10;
self.imgview2.clipsToBounds = YES;
self.imgview2.layer.borderWidth = 5;
self.imgview2.layer.borderColor = [[UIColor whiteColor] CGColor];
}
return self;
}
@end
github链接地址:https://github.com/jiangbin1993/pockerRotateAnimation.git
本地下载地址:http://xiazai./201707/yuanma/pockerRotateAnimation().rar
总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# ios
# 翻转动画
# view正反翻转动画
# 翻页动画效果
# IOS swift中的动画的实例详解
# ios基于MJRefresh实现上拉刷新和下拉加载动画效果
# iOS中利用CAEmitterLayer实现粒子动画详解
# iOS 下拉刷新动画的实现实例
# iOS 实现简单的加载等待动画示例(思路与实现)
# IOS 中动画的暂停与继续播放的详解
# 本地下载
# 把它
# 给大家
# 这篇文章
# 几张
# 谢谢大家
# 多说
# 移到
# 先在
# 移除
# 空白处
# 有疑问
# import
# interface
# assign
# nonatomic
# PockerView
# property
# setAnimationTransition
# addSubview
相关文章:
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
大型企业网站制作流程,做网站需要注册公司吗?
焦点电影公司作品,电影焦点结局是什么?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何通过VPS建站无需域名直接访问?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何通过.red域名打造高辨识度品牌网站?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
建站之星如何快速解决建站难题?
教程网站设计制作软件,怎么创建自己的一个网站?
建站VPS选购需注意哪些关键参数?
定制建站价位费用解析与套餐推荐全攻略
制作营销网站公司,淘特是干什么用的?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何选择高效稳定的ISP建站解决方案?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在Windows虚拟主机上快速搭建网站?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
历史网站制作软件,华为如何找回被删除的网站?
香港服务器部署网站为何提示未备案?
Python如何创建带属性的XML节点
建站之星安装后如何自定义网站颜色与字体?
如何续费美橙建站之星域名及服务?
为什么Go需要go mod文件_Go go mod文件作用说明
如何高效搭建专业期货交易平台网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何在Golang中引入测试模块_Golang测试包导入与使用实践
制作门户网站的参考文献在哪,小说网站怎么建立?
制作网站公司那家好,网络公司是做什么的?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
建站之星后台密码如何安全设置与找回?
购物网站制作公司有哪些,哪个购物网站比较好?
如何在云主机上快速搭建网站?
c++ stringstream用法详解_c++字符串与数字转换利器
成都网站制作报价公司,成都工业用气开户费用?
如何解决VPS建站LNMP环境配置常见问题?
如何选购建站域名与空间?自助平台全解析
如何通过虚拟主机空间快速建站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
,巨量百应是干嘛的?
C#如何使用XPathNavigator高效查询XML
宝塔新建站点报错如何解决?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
网站网页制作专业公司,怎样制作自己的网页?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
*请认真填写需求信息,我们会在24小时内与您取得联系。