IOS

2013-09-03 3 views
2

에 뒤집기 인사말 카드 작업을 수행하는 방법에 내가이 비디오 같은 카드를 열 필요가있는 응용 프로그램을 개발하고IOS

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

First Side of Card Third side of card Second Side of Card Fourth side of card

내가 봤하지만, 이 기능에 대한 코드를 찾지 못했습니다.

인사말 카드에는 네면이 있습니다. Just Wink App과 같이 터치하거나 터치 할 때 인사 장의 모든면을 애니메이션 또는 UIGesturerecognizer로 볼 필요가 있습니다.

아이디어 나 샘플 코드를 알려 주시면 감사하겠습니다.

답변

4

"미리 감사드립니다"나는 당신을 위해이 코드를 작성했습니다.

*

이 DEGREES_TO_RADIANS (d)를 정의 .PCH 파일 (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]; 
     }]; 
    } 

희망이 도움이 될 것입니다.

+0

고맙습니다. @Xman. 위의 코드를 사용했지만 인사말 카드의 네면을 모두보고 싶습니다. 세 번째면을 두드리면 카드의 두 번째면을 표시합니다. 두 번째면을 두드리면 카드의 세 번째면이 표시됩니다. – Vidhyanand

+0

@ Xman .. 좋은 답변을 주셔서 감사합니다. 위의 코드를 구현 한 사람은 저에게 맞습니다. 그러나 아무나 말해도 윙크처럼 전체 스크롤 가능 방법을 알려줄 수는 있습니다 ... 전체보기를 UIScrollView에 추가 할 수 있습니까? –

+0

@Prashant N HI. 뷰 객체에 애니메이션을 적용하면서 원래 프레임을 변경합니다. –