【发布时间】:2011-02-12 19:29:19
【问题描述】:
我的应用程序中有许多图标,我希望以类似于您尝试从 iPhone 的主屏幕删除应用程序时所发生的方式为它们设置动画。你怎么能这样做?
此外,有没有办法让图标以类似于解锁 iPhone 时的方式在屏幕上显示动画?
【问题讨论】:
标签: iphone objective-c ios core-animation
我的应用程序中有许多图标,我希望以类似于您尝试从 iPhone 的主屏幕删除应用程序时所发生的方式为它们设置动画。你怎么能这样做?
此外,有没有办法让图标以类似于解锁 iPhone 时的方式在屏幕上显示动画?
【问题讨论】:
标签: iphone objective-c ios core-animation
如果你想让你的视图、图像等像主屏幕一样摆动,你可以这样做:
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)
【讨论】:
使用块(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){
}];
【讨论】:
如果您指的是 iOS 主屏幕中的图标,我认为这是不可能的。
当然,如果您指的是应用程序中的图标,您可以为所欲为。
【讨论】:
animateWithDuration 在动画块中更改其 frame 属性。 Apple 的 iOS 视图编程指南的清单 4-1 和 4-2 中有一个示例。