ios - 我怎样才能加快 UISnapBehavior 的速度?

标签 ios objective-c cocoa-touch uikit-dynamics

我可以通过添加具有阻力的 UIDynamicItemBehavior 轻松地使捕捉更慢。然而,阻力的默认值是 0.0,这对我来说还是太慢了。将阻力设置为负值没有效果,它似乎移动得像 0.0 一样快。

如何使 UISnapBehavior 更快?

(这里是一个让捕捉的例子):

UIDynamicItemBehavior *dynamicItemBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[button]];
dynamicItemBehavior.resistance = 50.0; // This makes the snapping SLOWER
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:button snapToPoint:point];
[self.animator addBehavior:button.dynamicItemBehavior];
[self.animator addBehavior:button.snapBehavior];

最佳答案

您还可以使用 UIAttachmentBehavior 来实现与 UISnapBehavior 类似的效果,并且可以更好地控制速度。例如:

UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:viewToAnimate attachedToAnchor:viewToAnimate.center];
[self.animator addBehavior:attachment];
attachment.frequency = 20.0;
attachment.damping = 1.0;
attachment.anchorPoint = newPoint;

通过将频率增加到1.0以上的值将使其更快。通过将 频率 降低到 0.01.0 之间的值,将使其变慢(或通过添加大于 resistance 的值1.0 到您的 UIDynamicItemBehavior)。


如果您发现它在使用此频率 值时在最终位置振荡,也请为该项目添加一些阻力:

UIDynamicItemBehavior *resistance = [[UIDynamicItemBehavior alloc] initWithItems:@[viewToAnimate]];
resistance.resistance = 100.0;
[self.animator addBehavior:resistance];

关于ios - 我怎样才能加快 UISnapBehavior 的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624728/

相关文章:

objective-c - 如何在 Xcode 中从 Guard Malloc 解释 "failed to VM allocate"

objective-c - NSNumber 的格式化绝对值

ios - 当推送每个新的 View Controller 时,调整以模态 UIModalPresentationFormSheet 呈现的导航 Controller 的大小

ios - 如何让 Safari 12 处理来自 soundcloud 的音频?

objective-c - 指针初始化

objective-c - UIDeviceOrientationDidChangeNotification 与 UIApplicationDidChangeStatusBarOrientationNotification

ios - 快速上传视频并播放,无需缓冲来自 URL 的视频

ios - Swift 中的 Objective-C 协议(protocol)

iphone - 现在 "English"或 "en"是首选 .lproj 文件夹名称吗?

iphone - 我如何将数据传回父 View Controller 。我正在使用 addSubView 方法来显示 subview