【问题标题】:How to do Flipping Greeting Card in IOS [closed]如何在IOS中翻转贺卡[关闭]
【发布时间】:2013-09-06 09:12:25
【问题描述】:

我正在开发一个应用程序,我必须在其中打开像这个视频这样的卡片

https://www.youtube.com/watch?v=srnRuhFvYl0&feature=youtu.be

我用谷歌搜索,但没有找到此功能的任何代码。

贺卡有四个面。当像在 Just Wink App 中一样点击或触摸时,我需要通过 Animation 或 UIGesturerecognizer 查看贺卡的每一面。

任何人提出想法或示例代码将不胜感激。

“提前致谢”

【问题讨论】:

    标签: ios objective-c animation flip


    【解决方案1】:

    我已经为你编写了这段代码。

    *把这个放到.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];
            }];
        }
    

    希望这会对您有所帮助。

    【讨论】:

    • 谢谢@Xman。我使用了上面的代码,但我想查看贺卡的所有四个面。当点击第三面时,它会动画显示卡片的第二面。当点击第二面时,它会动画显示卡片的第三面。
    • @Xman..感谢您提供了一个很好的答案..我实现了上面的代码它对我有用,但谁能告诉我如何让整个滚动就像眨眼一样......我可以吗?将整个视图添加到 UIScrollView。
    • @Prashant N HI。它在动画视图对象时更改原始帧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多