【问题标题】:Showing pushviewcontroller animation look like presentModalViewController显示 pushviewcontroller 动画看起来像 presentModalViewController
【发布时间】:2011-04-19 18:55:25
【问题描述】:

是否可以显示pushViewController 动画看起来像presentModalViewController 但具有pushViewController 的背景功能?

【问题讨论】:

    标签: ios iphone animation pushviewcontroller presentmodalviewcontroller


    【解决方案1】:

    您应该考虑执行以下操作:

    ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN];
    [navigationController pushViewController:myVC animated:NO];
    

    其中 OFF_SCREEN 是屏幕下方的某个 CGRect,例如 (0, 481, 320, 480)。然后使用动画块将viewcontroller的view的frame.origin调整为(0, 0)。您可能希望在 viewDidLoad 或 viewDidAppear 中制作动画块。

    【讨论】:

    • 视图控制器没有 initWithFrame: 初始化器
    【解决方案2】:

    试试这个:

    UIViewController *yourViewController = [[UIViewController alloc]init];
    
    [UIView  beginAnimations: @"Showinfo"context: nil];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.75];
    [self.navigationController pushViewController: yourViewController animated:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
    [UIView commitAnimations];
    

    【讨论】:

    • 谢谢!这真的很有帮助!
    • 您知道如何使用 iOS 8 样式转换吗?
    • 这段代码是否按照它所说的那样做?因为它不是用来制作像 Present View Controller 这样的动画。
    【解决方案3】:

    如果你想淡化动画,这种方法很有效。

    CATransition* transition = [CATransition animation];
    transition.duration = 0.3;
    transition.type = kCATransitionFade;
    transition.subtype = kCATransitionFromTop;
    
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
    [self.navigationController pushViewController:gridController animated:NO];
    

    【讨论】:

    • 像冠军一样工作!不错的过渡。谢谢!
    • 效果很好!非常感谢!
    • 这是迄今为止我发现的最好的方法。其他方法会导致视图框架或导航控制器栏本身出现错误。这个动画效果很好!
    【解决方案4】:

    为了将 PushViewControler 动画显示为 Present 下面的代码正在工作,

    对于推送

     ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
     CATransition* transition = [CATransition animation];
     transition.duration = 0.4f;
     transition.type = kCATransitionMoveIn;
     transition.subtype = kCATransitionFromTop;
     [self.navigationController.view.layer addAnimation:transition
                                                        forKey:kCATransition];
     [self.navigationController pushViewController:VC animated:NO];
    

    对于POP

    CATransition* transition = [CATransition animation];
    transition.duration = 0.4f;
    transition.type = kCATransitionReveal;
    transition.subtype = kCATransitionFromBottom;
    [self.navigationController.view.layer addAnimation:transition
                                                forKey:kCATransition];
    [self.navigationController popViewControllerAnimated:NO];
    

    但有 1 个问题,即它在上升/下降时显示浅黑色背景,
    正在为此工作,一旦完成,请在此处发布新代码。

    【讨论】:

    • @Julian,没明白你的意思。
    • @Dilip : 你解决了在上升/下降时显示浅黑色背景的问题吗?如果你已经解决了,那么请更新你的答案..
    • @MeetDoshi,很抱歉无法解决这个问题,但我已经通过将应用窗口的颜色设置为我的应用主题来克服这个问题,这样它就不那么引人注目了。
    • 因为我的背景是单色的,所以我用一点(脏)for循环去掉了浅黑色背景。在这里你进入你的原始 VC:for (UIView *view in self.view.subviews) { view.backgroundColor = someColor }
    【解决方案5】:

    适用于 Xamarin (C#) 等效代码中的所有尝试 来自上面@hardik Thakkar 的回答,动画过程中有黑色背景的问题,一切都很好。

    对于流行音乐

        CATransition transition = CATransition.CreateAnimation();
        transition.Duration = 0.4;
        transition.Type = CAAnimation.TransitionReveal;
        transition.Subtype = CAAnimation.TransitionFromTop;
        this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));
    

    推送

        CATransition transition = CATransition.CreateAnimation();
        transition.Duration = 0.4;
        transition.Type = CAAnimation.TransitionReveal;
        transition.Subtype = CAAnimation.TransitionFromBottom;
        this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));
    

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多