亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

利用iOS開發實現翻轉撲克牌動畫的方法

2020-07-26 02:45:12
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹的關于利用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.VeVB.COm/201707/yuanma/pockerRotateAnimation(VeVB.COm).rar

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久琪琪电影院| 日韩亚洲成人av在线| 日韩欧美主播在线| 欧美在线激情网| 精品亚洲永久免费精品| 91chinesevideo永久地址| 久久免费精品视频| 日韩视频免费在线观看| 91麻豆国产语对白在线观看| 亚洲国产精品久久久久秋霞不卡| 日韩美女av在线免费观看| 欧美性猛交xxxx黑人猛交| 亚洲精品久久在线| 97福利一区二区| 久久99亚洲热视| 97色在线视频| 精品久久中文字幕| 综合网日日天干夜夜久久| 日韩av在线网| 亚洲丝袜在线视频| 国外成人在线播放| 亚洲精品一区二区久| 懂色aⅴ精品一区二区三区蜜月| 精品一区二区三区电影| 在线看福利67194| 日韩视频一区在线| 国产精品羞羞答答| 国产精品露脸自拍| 国产精品成人一区| 欧美激情xxxxx| 日韩一中文字幕| 成人在线中文字幕| 国产欧美久久久久久| 亚洲天堂av在线免费观看| 欧美成人合集magnet| 成人免费看吃奶视频网站| 精品亚洲国产成av人片传媒| 亚洲精品视频二区| 亚洲欧美日韩另类| 亚洲精品一区中文字幕乱码| 性亚洲最疯狂xxxx高清| 亚洲自拍偷拍色片视频| 成人免费网视频| 在线午夜精品自拍| 狠狠色狠狠色综合日日小说| 亚洲va电影大全| 国产成人精品久久二区二区91| 亚洲美女自拍视频| 国产精品免费久久久久久| 91黑丝高跟在线| 欧美亚洲成人免费| 国模私拍一区二区三区| 992tv成人免费视频| 亚洲国产成人精品久久久国产成人一区| 中文字幕精品一区二区精品| 91久久久久久国产精品| 欧洲日韩成人av| 欧美情侣性视频| 日韩高清电影免费观看完整| 亚洲国产精品成人精品| 日韩精品中文在线观看| 欧美性生交大片免网| 一区二区三区四区精品| 日本一区二区不卡| 亚洲第一网站免费视频| 欧美精品激情在线| 97久久国产精品| 欧美亚洲国产精品| 日韩成人在线播放| 高清欧美电影在线| 久久精品一区中文字幕| 91av中文字幕| 国产精品揄拍500视频| 日本a级片电影一区二区| 91在线观看免费高清| 亚洲综合在线中文字幕| 国产一区二区三区在线播放免费观看| 欧美日韩在线影院| 性色av一区二区三区在线观看| 欧美老妇交乱视频| 欧美日韩在线第一页| 国产午夜精品久久久| 91亚洲精品一区| 亚洲黄色www| 美日韩精品视频免费看| 亚洲精品一区二区网址| 91tv亚洲精品香蕉国产一区7ujn| 亚洲精品视频在线播放| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲成人亚洲激情| 久久精品亚洲精品| 欧美激情手机在线视频| 亚洲天堂成人在线| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品视频yy9099| 欧美精品videosex牲欧美| 欧美精品一二区| 日韩av电影手机在线| 国产精品露脸av在线| 精品视频久久久| 91深夜福利视频| 久久精品国产69国产精品亚洲| 成人免费直播live| 成人午夜在线视频一区| 成人欧美在线视频| 久久久在线免费观看| 日韩亚洲国产中文字幕| 中日韩美女免费视频网址在线观看| 久久久久北条麻妃免费看| 国产精品久久久久影院日本| 日韩免费av片在线观看| 亚洲最大福利视频| 亚洲欧洲激情在线| 欧美激情亚洲精品| 日韩美女视频在线观看| 日韩不卡在线观看| 在线播放国产一区二区三区| 日本a级片电影一区二区| 久久精品国产成人精品| 日韩欧美国产中文字幕| 欧美高清性猛交| 91社影院在线观看| 久久精品夜夜夜夜夜久久| 亚洲欧洲自拍偷拍| 欧美性精品220| 日本19禁啪啪免费观看www| 亚洲欧美日本另类| 欧美做受高潮1| 色黄久久久久久| 91在线播放国产| 欧美日韩国产成人在线观看| 亚洲国模精品一区| 亚洲在线视频观看| 国产精品久久久久久久久久99| 国产97在线视频| 欧美午夜视频在线观看| 国产精品视频999| 久久福利网址导航| www.久久色.com| 欧美精品一二区| 欧美性videos高清精品| 久久国产精品影片| 成人网页在线免费观看| 国产精品久久久久99| 欧美成人午夜激情视频| 亚洲精品国产精品乱码不99按摩| 这里精品视频免费| 欧洲成人午夜免费大片| 欧美激情精品久久久久久| 国产日本欧美一区| 亚洲人成在线观看| 欧美视频中文在线看| 久久精品福利视频| 国产精品99导航| 国产91精品久久久| 97在线免费观看| 亚洲第一中文字幕在线观看| 亚洲欧美在线看| 久久99久久99精品免观看粉嫩| 国产精品jvid在线观看蜜臀| 8050国产精品久久久久久| 国外成人在线视频| 国产日韩欧美在线| 久久九九热免费视频|