UiView中的UiView过渡

问题描述:

这听起来像一个初学者的问题,但由于我无法让它在预期的时尚中工作,我希望某处能够指向正确的方向。UiView中的UiView过渡

我试图实现的是视图内视图的转换。 我基本上想用另一个视图(controller?!?)的内容替换视图内的视图。

让我们说,我有一本书的图像,我想在本书内部转到另一页面(例如从日历视图转到详细的日常视图)。我只想把“书籍内容”(白色内容区域)包含在该过渡中,而不是整本书本身(整个屏幕)。

我可以用相同的视图做一个转换,没问题,但我没有得到它尝试用完全不同的视图替换视图。 它没有关系在单独的视图控制器中的视图,或一个视图控制器中的所有视图,所以我还没有得到它的工作,但更糟糕的是,我没有想法。 所以帮助!如果请有人在那里可以如此善良,并告诉我我做错了什么。 建议也非常感谢。 谢谢!

汤姆

也许你可以隐藏一个视图,然后使用一个UIView动画块显示其他。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view1.view cache:YES]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view2.view cache:YES]; 
[UIView setAnimationDuration: 1.5]; 
[UIView commitAnimations]; 

view1.view.hidden = YES; 
view2.view.hidden = NO; 

编辑:这就是你要找的东西?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 
[view1 viewWillDisappear:YES]; 
[view2 viewWillAppear:YES]; 

view1.view.hidden = YES; 
view2.view.hidden = NO; 
[view1 viewDidDisappear:YES]; 
[view2 viewDidAppear:YES]; 
[UIView commitAnimations]; 

或者,你可以使用这样的事情:

[UIView animateWithDuration:0.5 
        delay:0.0 
       options:UIViewAnimationOptionTransitionFlipFromRight 
      animations:^{ 
          [view1 removeFromSuperview]; 
          [mySuperview addSubview:view2]; 
         } 
      completion:nil]; 

退房的exchangeSubviewsAtIndex:方法在UIView class。只需设置您想要从其他视图转换到另一个视图的子视图的2个视图;然后在该父视图上调用此方法。

+0

我错过了方法,但没有工作对我来说。无论如何感谢您的回答! – Tom 2010-12-07 13:55:47

假设你有两种观点,A和B.它们具有相同的帧,使他们占据了控制器的视图相同的空间,为您的目的显示图书的页面视图控制器。你想显示一个,并转换到另一个。

一种方法是将一个的alpha属性设置为1.0(不透明),另一个设置为0.0(透明)。因为这个属性可以是动画的,所以可以使用beginAnimations:context/commitAnimations从一个到另一个进行淡入淡出,或者使用像docs advise之类的块方法之一。

另一种方法是在两个视图中为框架中的变化设置动画。成立了意见,使一个有框架,使得它在显示正确的地方,其他有相同的帧但frame.origin.x等于frame.size.width - 它会被隐藏起来,因为它是关闭屏幕或隐藏在其他视图后面。通过将视图A的frame.origin.x设置为-frame.size.width并将frame B的frame.origin.x设置为显示位置x原点,从而为框架设置动画。然后设置(不包括动画)框架A的frame.origin.x再次frame.origin.width,更新其内容,你准备到另一个页面从右侧滑动。

+0

嗨,队友,谢谢你的回答。我现在能够在期望的内容区域内进行“过渡”(但不是真的)。但是我暂时没有做任何动画,因为我现在还没有更多的时间来做这件事。 如果我使用单视图进行transitionflip动画,它会翻页并让我刷新视图。 多数民众赞成多少正是我想要的时候用另一个替换一个视图...让一个视图去,打开血腥的页面(动画),并获得新的视图。不能让这个工作,虽然.... – Tom 2010-12-07 14:11:53

+0

嗨,汤姆。在视频游戏中,通常会进行“双缓冲”,在更新隐藏的单键时显示一个视图,更新隐藏的单键,重复。你是否保持相同的两个视图或试图释放一个并创建一个新的视图?我真的认为使用UIViewAnimationTransitionFlipFromRight显示的答案会做你所需要的。 – 2010-12-07 21:52:40