gpt4 book ai didi

iphone - iOS图标抖动算法

转载 作者:IT王子 更新时间:2023-10-29 08:04:20 25 4
gpt4 key购买 nike

我正在编写一个 iPad 应用程序,它以类似于 Pages 呈现用户文档的方式(作为实际文档的大图标)呈现用户文档。我还想模仿用户点击编辑按钮时的抖动行为。当您在 iPhone 和 iPad 上点击并按住图标时,这与主屏幕上的图标会产生相同的抖动模式。

我搜索了 Internet 并找到了一些算法,但它们只会导致 View 来回摇摆,这与 Apple 的抖动完全不同。似乎那里有一些随机性,因为每个图标的抖动都有点不同。

有没有人拥有或知道一些代码可以重新创建相同的抖动模式(或非常接近它的东西)?谢谢!!!

最佳答案


@Vic320 的回答很好,但我个人不喜欢这种翻译。我已经编辑了他的代码以提供一个我个人觉得看起来更像跳板摆动效果的解决方案。大多数情况下,它是通过添加一点随机性并专注于旋转而不是平移来实现的:

#define degreesToRadians(x) (M_PI * (x) / 180.0)
#define kAnimationRotateDeg 1.0

- (void)startJiggling {
NSInteger randomInt = arc4random_uniform(500);
float r = (randomInt/500.0)+0.5;

CGAffineTransform leftWobble = CGAffineTransformMakeRotation(degreesToRadians( (kAnimationRotateDeg * -1.0) - r ));
CGAffineTransform rightWobble = CGAffineTransformMakeRotation(degreesToRadians( kAnimationRotateDeg + r ));

self.transform = leftWobble; // starting point

[[self layer] setAnchorPoint:CGPointMake(0.5, 0.5)];

[UIView animateWithDuration:0.1
delay:0
options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
animations:^{
[UIView setAnimationRepeatCount:NSNotFound];
self.transform = rightWobble; }
completion:nil];
}
- (void)stopJiggling {
[self.layer removeAllAnimations];
self.transform = CGAffineTransformIdentity;
}


值得称赞的是,@Vic320 的回答提供了此代码的基础,因此为此 +1。

关于iphone - iOS图标抖动算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com