【问题标题】:iPhone: transitioning views with Core AnimationiPhone:使用 Core Animation 转换视图
【发布时间】:2009-05-20 21:44:08
【问题描述】:

在 Mac 上,对视图进行简单的淡入淡出转换(无需任何自定义关键帧时间)的最佳方法是执行以下摘录:

[[self animator] replaceSubview:aView with:bView];

很遗憾,动画师属性在 iPhone 上不可用。在 iPhone 上这样做的最佳选择是什么?是否在每个视图上设置 alpha 通道?示例代码会很棒。

谢谢。

【问题讨论】:

    标签: iphone core-animation objective-c cocoa-touch


    【解决方案1】:

    在 iphone 上为视图设置动画的基本方法是使用 UIView beginAnimations 和 commitAnimations 调用。它们允许您修改视图的动画属性并使这些更改动画化。

    例如,我有一个使用这种方法隐藏和显示的自定义视图:

    - (void) showAView:(CustomAView *)aView
    {
      [UIView beginAnimations:nil context:nil];
      [UIView setAnimationDuration:0.5];    
      aView.frame = CGRectMake(0.0f, 110.0f , aView.frame.size.width, aView.frame.size.height);
      [UIView commitAnimations];  
    }
    
    - (void) hideAView:(CustomAView *)aView
    {
      [UIView beginAnimations:nil context:nil];
      [UIView setAnimationDuration:0.5];  
      aView.frame = CGRectMake(0.0f, self.view.frame.size.height, aView.frame.size.width, aView.frame.size.height);    
      [UIView commitAnimations];
    }
    

    通过在 UIView beginAnimations/commitAnimations 中包装 frame 属性更改,该更改应用了标准动画。

    您可以使用 UIView 动画类方法为动画添加其他属性,例如。

    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    

    【讨论】:

    • 嘿保罗,你能通过淡出视图和淡入另一个视图来进一步详细说明吗?这个只是隐藏了一个视图。它并没有像上面的动画师那样完全处理过渡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2012-07-10
    相关资源
    最近更新 更多