[英]FlipFromRight UIView animation
首先,這是我的代碼:
[_helperView addSubview:_navigationController.view];
[_helperView addSubview:itemView];
[UIView beginAnimations:@"pageFlipAnimation" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_helperView cache:NO];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(pageFlipAnimationDidStop)];
[itemView removeFromSuperview];
[UIView commitAnimations];
我的問題是沒有動畫。 如果我在_navigationController.view和itemView之前添加(我的意思是不在此方法中),則一切正常,但是當我在動畫之前添加時,它什么也不做。 我還嘗試再次調用動畫片didStopSelector中的動畫,並且也可以在其中工作。 您能幫我一下為什么在這種情況下不起作用嗎? 有什么建議如何解決嗎?
你或許應該給予用戶界面以實現另外的機會itemView
。 為此,請在addSubview:itemView
之后添加一行:
[self performSelector(removeAnim:) withObject:itemView afterDelay:0.01];
並將動畫塊移至某個功能
-(void)removeAnim:(UIVieW*)itemView
這應該可以解決問題。
將QuartzCore.framework與這些動畫一起使用。
-(void)viewSlideInFromRightToLeft:(UIView *)views
{
CATransition *transition = nil;
transition = [CATransition animation];
transition.duration = 0.5;//kAnimationDuration
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromRight;
transition.delegate = self;
[views.layer addAnimation:transition forKey:nil];
}
-(void)viewSlideInFromLeftToRight:(UIView *)views
{
CATransition *transition = nil;
transition = [CATransition animation];
transition.duration = 0.5;//kAnimationDuration
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromLeft;
transition.delegate = self;
[views.layer addAnimation:transition forKey:nil];
}
-(void)viewSlideInFromTopToBottom:(UIView *)views
{
CATransition *transition = nil;
transition = [CATransition animation];
transition.duration = 0.5;//kAnimationDuration
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromBottom ;
transition.delegate = self;
[views.layer addAnimation:transition forKey:nil];
}
-(void)viewSlideInFromBottomToTop:(UIView *)views
{
CATransition *transition = nil;
transition = [CATransition animation];
transition.duration = 0.5;//kAnimationDuration
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromTop ;
transition.delegate = self;
[views.layer addAnimation:transition forKey:nil];
}
對於AnimationType ,可以使用以下選項:-> kCATransitionMoveIn
, kCATransitionPush
, kCATransitionReveal
, kCATransitionFade
對於AnimationSubType ,可以使用以下選項:-> kCATransitionFromLeft
, kCATransitionFromRight
, kCATransitionFromTop
, kCATransitionFromBottom
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.