【问题标题】:How do you make images wobble like on the iPhone home screen?你如何让图像在 iPhone 主屏幕上摇摆不定?
【发布时间】:2011-02-12 19:29:19
【问题描述】:

我的应用程序中有许多图标,我希望以类似于您尝试从 iPhone 的主屏幕删除应用程序时所发生的方式为它们设置动画。你怎么能这样做?

此外,有没有办法让图标以类似于解锁 iPhone 时的方式在屏幕上显示动画?

【问题讨论】:

    标签: iphone objective-c ios core-animation


    【解决方案1】:

    如果你想让你的视图、图像等像主屏幕一样摆动,你可以这样做:

        CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-15.0));
        CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(15.0));
    
        view.transform = leftWobble;  // starting point
    
        [UIView beginAnimations:@"wobble" context:view];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:5]; // adjustable
        [UIView setAnimationDuration:0.125];
        [UIView setAnimationDelegate:self];
        view.transform = rightWobble; // end here & auto-reverse
        [UIView commitAnimations];
    

    您还需要添加以下定义:

    #define RADIANS(degrees) ((degrees * M_PI) / 180.0)
    

    【讨论】:

    • 我应该把这段代码放在 viewDidUnload() 方法或任何其他方法中,因为我真的不知道这个谢谢
    • 你可以把它放在你需要动画开始的地方。例如,如果动画在视图显示时开始,您可以在 viewWillAppear: 方法中执行(不要忘记调用超类方法)。如果您希望 UIImage(或任何其他类的 UIView)摆动,那将是代码中指定的“视图”。
    • 感谢您的快速回复,它也可以正常工作......但我正在寻找一些精细的动画,比如从小到全屏的屏幕,比如放大到缩小或一些对角线动画,因为我们正在做ppt演示..我希望你能得到我..如果你知道这件事请帮助我谢谢
    • 在动画块中,您可以放置​​所需的动画效果,而不是变换。例如,您可以将 UIImageView 从小尺寸调整为全屏。将动画块之前的视图框架设置为初始大小,然后将新大小放置在 view.transform... 所在的动画块中。根据您的需要,您还可以使用 UIScrollView 来处理触摸缩放。
    【解决方案2】:

    使用块(iOS 4+)它看起来像:

    #define RADIANS(degrees) ((degrees * M_PI) / 180.0)
    
        CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-2.0));
        CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(2.0));
    
        cell.transform = leftWobble;  // starting point
        cell.deleteButton.hidden = NO;
    
        [UIView animateWithDuration:0.125 delay:0 options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse) animations:^{
            cell.transform = rightWobble;
        }completion:^(BOOL finished){
        }];
    

    【讨论】:

    • 我认为可以添加两件事。 | UIViewAnimationOptionAllowUserInteraction 如果按钮是运行动画的视图的子级。 // 出于任何原因移除摆动动画 [self.view.layer removeAllAnimations];导入#import
    【解决方案3】:

    如果您指的是 iOS 主屏幕中的图标,我认为这是不可能的。

    当然,如果您指的是应用程序中的图标,您可以为所欲为。

    【讨论】:

    • 如果图标只是简单地移动、旋转或缩放(如摆动),那么 UIKit 提供了足够的功能供您完成。为每个图标创建一个 UIView(可能是 UIImageView)对象,并使用 UIView 的类方法animateWithDuration 在动画块中更改其 frame 属性。 Apple 的 iOS 视图编程指南的清单 4-1 和 4-2 中有一个示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多