2012-08-26 2 views
0

UIViewTransitionfromView의 이상한 동작을 이해하지 못하고 있습니다. 두 번째보기는 처음에는 애니메이션없이 표시됩니다. 코드는 다음과 같습니다.UIViewTransitionfromView : 결코 작동하지 않고 두 번째 이미지 만 표시합니다.

UIImageView *backstar=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)]; 
    backstar.image=[UIImage imageNamed:@"backstar.png"]; 

UIImageView *star=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)]; 
star.image=[UIImage imageNamed:@"star.png"]; 

UIView *containerView=[[UIView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)]; 
containerView.backgroundColor=[UIColor blackColor]; 
[self.view addSubview:containerView]; 
[containerView addSubview:backstar]; // if I don't do this nothing happens, container view stays f*** deep black 
[containerView addSubview:star]; 

//if i remove the animation line, star is displayed of course, on top of backstar 

[UIView transitionFromView:star toView:backstar duration:2.0 options:UIViewAnimationOptionShowHideTransitionViews | UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished){} ]; 

도대체 내 실수입니까? Apple doc에서 말했듯이, imageViews를 삭제하지 않고 표시하거나 숨길 수 있어야합니다.

많은 감사합니다.

답변

0

이 코드가있는 곳의 게시물에는 명확하지 않습니다. viewDiLoad 또는 viewWillAppear에 모두있는 경우 작동하지 않는 것으로 나타났습니다. 첫 번째 뷰를 가져 와서 viewDidLoad 또는 viewWillAppear에서 표시 한 다음 두 번째 뷰를 추가하고 다른 메서드 (버튼 또는 performSelector : withObject : afterDelay :)로 호출 할 수있는 전환을 수행해야합니다. 또한 스타에서 백 스타로 이동하려면 스타를 먼저보기에 추가하고 전환을 수행하려는 경우에만 스타를 추가해야합니다. 이것은 나를 위해 일한 것입니다 :

@implementation TransitionTestViewController 
@synthesize star,backstar; 

-(void)viewDidLoad { 
    self.backstar=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)]; 
    backstar.image=[UIImage imageNamed:@"backstar.png"]; 
    self.star=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)]; 
    star.image=[UIImage imageNamed:@"star.png"]; 
    [self.view addSubview:star]; 
    //[self performSelector:@selector(flipViews:) withObject:nil afterDelay:.01]; 
} 

-(IBAction)flipViews:(UIButton *) sender { 
    [self.view addSubview:backstar]; 
    [UIView transitionFromView:self.star toView:self.backstar duration:2.0 options: UIViewAnimationOptionShowHideTransitionViews |UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished){}]; 
} 
+0

답해 주셔서 감사합니다. 나는이 모든 것을 독립적 인 방법으로 부른다. 그래서 다른 변수를 호출하지 않고 그 안에 변수가 정의되어있다. (물론 나는 다른 방법으로 그것을 할 수 있었다). 어쨌든 나는 너와 똑같은 것을 시도 할 것이고 최대한 빨리 말할 것이다. 컨테이너 뷰를 사용하지 않는 것을 볼 수 있습니다. – NightCoder

+0

컨테이너 뷰를 사용하거나 사용하지 않고 작동하지만 코드가 두 가지 방법으로 분할되었으므로 containerView에 ivar 또는 속성이 있어야합니다. – rdelmar

+0

이제는 정상적으로 작동하지만 콘테이너보기에서만 작동합니다. 그렇지 않으면 주보기도 전환됩니다. – NightCoder

관련 문제