簡體   English   中英

FlipFromRight UIView動畫

[英]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 ,可以使用以下選項:-> kCATransitionMoveInkCATransitionPushkCATransitionRevealkCATransitionFade

對於AnimationSubType ,可以使用以下選項:-> kCATransitionFromLeftkCATransitionFromRightkCATransitionFromTopkCATransitionFromBottom

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM