2012-11-24 4 views
0

두 이미지 사이를 뒤집는 방법을 잘 사용했습니다. 그러나이 경우, 현재 나를 넘어선 이유로 - 애니메이션은 현재 "newView"에서 "newView"로만 전환됩니다.UIView Flip Animation Issue

내 방식의 오류를 지적하는 도움은 크게 감사하겠습니다. 코드는 다음과 같이

UIImageView *oldView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dark_wood.png"]]; 
UIImageView *newView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"light_wood.png"]]; 
[container addSubview:oldView]; 

과 :

[UIView transitionWithView:container 
        duration:2 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       animations:^{ [oldView removeFromSuperview]; [container addSubview:newView]; } 
       completion:nil]; 

을 (그것은 아마이 코드를 넘어 뭔가 v.simple입니다 ..)

그것은 아마도 그들이 그러나 여기 UIImageViews이 일 수 있었다
+0

이 코드는 모두 한 가지 방법으로 모두 있습니까? 그렇지 않은 경우 코드 작성 구조를 볼 수 있도록 전체 메소드를 표시하십시오. – rdelmar

답변

0

이 솔루션은 :

내가 플립을 시작하는 데 사용 된 방법은 잘못이었다. 나는 플립에 대한 UISlider 호출을 가졌지 만, 그렇게하지 못하도록하는 시스템이 없다면 플립 애니메이션을 계속해서 호출하고 있었다. 코드에서

솔루션은 다음과 같이 돕는 토니에

- (IBAction)slider:(id)sender { 
    if (!playing) { 
     [UIView transitionWithView:self.view 
         duration:3 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
        animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; } 
        completion:nil]; 
     playing = YES; 
    } 
} 

감사하십시오 UISlider에 대한

BOOL playing; 

IBAction를 :

반복 애니메이션을 호출 UISlider을 중지하려면 BOOL 만들기 이걸로. 스크립트를 깨끗하게 유지할 수있는 교훈이 있다면!

1

몇 가지 예입니다 나를 위해 일하는 코드. 여기에 볼 수있는 뷰 컨트롤러는 부하 방법이 너무

[super viewDidLoad]; 
view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
view1.backgroundColor = [UIColor yellowColor]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(0, 0, 50, 50); 
[button addTarget:self action:@selector(thusFar:) forControlEvents:UIControlEventTouchUpInside]; 
[view1 addSubview:button]; 
[self.view addSubview:view1]; 

처럼 보이는 그리고 여기 이것은 나를 위해 작동 버튼

-(void)thusFar:(id)sender 
{ 

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    view2.backgroundColor = [UIColor brownColor]; 
    [UIView transitionWithView:self.view duration:5 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; } completion:nil]; 
} 

에 의해 호출되는 방법입니다했다입니다. 이 코드를 예제로 사용하십시오. 하지만 UIViews 대신 UIImageViews를 사용하고 있다는 점만 다릅니다. 이제 UIImageView는 UIView의 자식이지만 문제가 될 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. Tony, UIView를 사용해 보았습니다.하지만 불행히도 - 같은 결과가 나타납니다. –

+0

프레임을 명시 적으로 지정하려고 시도했을 수 있습니까? 나는 애니메이션을하기 위해서 그것들을 처리 할 필요가 있다고 생각한다. 아마 초기화되지 않은 어떤 것이 명시 적으로 존재하지 않기 때문일 것이다. – Tony

+0

나는이 스크립트에서 진행되는 모든 종류의 번역, 회전 및 이미지 변경이 가능하다고 생각합니다. 나는 트롤을 –