Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
7年前关闭。
Improve this question
我正在开发一个应用,其中我必须像这样的视频一样打开卡片
https://www.youtube.com/watch?v=srnRuhFvYl0&feature=youtu.be
我用谷歌搜索,但没有找到此功能的任何代码。
贺卡有四个方面。就像在Just Wink App中一样,当我轻按或触摸时,我需要通过Animation或UIGesturerecognizer查看贺卡的每一面。
任何提出想法或示例代码的人都会感激不尽。
“提前致谢”
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
7年前关闭。
Improve this question
我正在开发一个应用,其中我必须像这样的视频一样打开卡片
https://www.youtube.com/watch?v=srnRuhFvYl0&feature=youtu.be
我用谷歌搜索,但没有找到此功能的任何代码。
贺卡有四个方面。就像在Just Wink App中一样,当我轻按或触摸时,我需要通过Animation或UIGesturerecognizer查看贺卡的每一面。
任何提出想法或示例代码的人都会感激不尽。
“提前致谢”
最佳答案
我已经为您编写了此代码。
*将此内容放入.pch文件中
定义DEGREES_TO_RADIANS(d)(d * M_PI / 180)
并且不要忘记添加和导入QuartzCore框架*
#import "MyViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface MyViewController (){
CATransform3D intialTransform;
CATransform3D middelTransform;
CATransform3D finalTransform;
}
@property(nonatomic,strong) UIView *myView1;
@property(nonatomic,strong) UIView *myView2;
@end
@implementation MyViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *myButton =[[UIButton alloc]initWithFrame:CGRectMake(300, 100, 120, 50)];
[myButton addTarget:self action:@selector(unfoldGreeting:) forControlEvents:UIControlEventTouchDown];
[myButton setTitle:@"Unfold" forState:UIControlStateNormal];
[myButton setBackgroundColor:[UIColor blackColor]];
[self.view addSubview:myButton];
_myView1 = [[UIView alloc]initWithFrame:CGRectMake(400, 200, 200, 300)];
[_myView1 setBackgroundColor:[UIColor redColor]];
[self.view addSubview:_myView1];
UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 150, 100, 100)];
[myLabel setText:@"Happy Birthday"];
[myLabel setFont:[UIFont fontWithName:@"Arial" size:25]];
[myLabel setTextColor:[UIColor whiteColor]];
[myLabel sizeToFit];
[_myView1 addSubview:myLabel];
intialTransform = CATransform3DIdentity;
intialTransform.m34 = 1.0 / -500;
intialTransform = CATransform3DRotate(intialTransform, DEGREES_TO_RADIANS(70), 1.0f, 0.0f, 0.0f);
_myView1.layer.transform = intialTransform;
_myView2 = [[UIView alloc]initWithFrame:CGRectMake(400, 200, 200, 300)];
[_myView2 setBackgroundColor:[UIColor purpleColor]];
[self.view addSubview:_myView2];
_myView2.layer.transform = intialTransform;
middelTransform = CATransform3DIdentity;
middelTransform.m34 = 1.0 / -500;
middelTransform = CATransform3DRotate(middelTransform, DEGREES_TO_RADIANS(70), 1.0f, 0.0f, 0.0f);
middelTransform = CATransform3DRotate(middelTransform, DEGREES_TO_RADIANS(-100), 0.0f, 1.0f, 0.0f);
middelTransform = CATransform3DTranslate(middelTransform,116, 0,100);
finalTransform = CATransform3DIdentity;
finalTransform.m34 = 1.0 / -500;
finalTransform = CATransform3DRotate(finalTransform, DEGREES_TO_RADIANS(70), 1.0f, 0.0f, 0.0f);
finalTransform = CATransform3DRotate(finalTransform, DEGREES_TO_RADIANS(-170), 0.0f, 1.0f, 0.0f);
finalTransform = CATransform3DTranslate(finalTransform,198, 0,16);
}
-(void)unfoldGreeting:(UIButton *)iSender{
[UIView animateWithDuration:1.0f animations:^{
_myView2.layer.transform = middelTransform;
} completion:^ (BOOL iFinished) {
[UIView animateWithDuration:1.0f animations:^{
_myView2.layer.transform = finalTransform;
}completion:nil];
}];
}
希望这会对您有所帮助。 关于ios - 如何在IOS中翻转贺卡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18587125/
10-11 14:51