- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有很多情况需要“摇动”一个 UIView。
(例如,“将 child 用户的注意力吸引到控件上”、“连接速度慢”、“用户输入了错误的输入”等。)
是否可以使用 UIKit Dynamics 来做到这一点?
所以你必须..
取景,比如在 0,0
添加一个 Spring 概念
轻推一下,说“左”
它应该在 Spring 上前后摆动,最终再次稳定到 0,0
这可能吗?我在 Apple 演示中找不到示例。干杯
请注意,正如 Niels 在下面敏锐地解释的那样,在某些情况下 Spring 不一定是您想要的“物理感觉”:在其他情况下它可能是完美的。据我所知,iOS 自己的应用程序(例如消息等)中的所有物理现在都使用 UIKit Dynamics,所以对我来说,了解“UIView 在 Spring 上弹跳”是值得的。
需要说明的是,您当然可以做一些“类似”的事情,只需要一个动画。示例...
但现在,它根本没有与 iOS 的其他部分相同的“物理感觉”。
-(void)userInputErrorShake
{
[CATransaction begin];
CAKeyframeAnimation * anim =
[CAKeyframeAnimation animationWithKeyPath:@"transform"];
anim.values = @[
[NSValue valueWithCATransform3D:
CATransform3DMakeTranslation(-4.0f, 0.0f, 0.0f) ],
[NSValue valueWithCATransform3D:
CATransform3DMakeTranslation(4.0f, 0.0f, 0.0f) ]
];
anim.autoreverses = YES;
anim.repeatCount = 1.0f;
anim.duration = 0.1f;
[CATransaction setCompletionBlock:^{}];
[self.layer addAnimation:anim forKey:nil];
[CATransaction commit];
}
最佳答案
如果你想使用 UIKit Dynamics,你可以:
首先,定义一个控制动画师:
@property (nonatomic, strong) UIDynamicAnimator *animator;
并实例化它:
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
其次,为该动画制作器添加附件行为以在当前位置查看。这将使它在插入完成后弹回。您必须尝试使用 damping
和 frequency
值。
UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:viewToShake attachedToAnchor:viewToShake.center];
attachment.damping = 0.5;
attachment.frequency = 5.0;
[self.animator addBehavior:attachment];
这些值不太正确,但也许它是您实验的起点。
应用推送行为 (UIPushBehaviorModeInstantaneous
) 来扰乱它。然后,依恋行为将导致其弹回。
UIPushBehavior *push = [[UIPushBehavior alloc] initWithItems:@[viewToShake] mode:UIPushBehaviorModeInstantaneous];
push.pushDirection = CGVectorMake(100, 0);
[self.animator addBehavior:push];
就我个人而言,我对这个特定的动画并不着迷(阻尼曲线对我来说不太合适)。我倾向于使用基于 block 的动画将其移动到一个方向(使用 UIViewAnimationOptionCurveEaseOut
),完成后启动另一个将其移动到相反的方向(使用 UIViewAnimationOptionCurveEaseInOut
),并且然后在完成后,使用 animateWithDuration
的 usingSpringWithDamping
再现将其移回原来的位置。恕我直言,这会产生一条曲线,感觉更像是“如果错了就摇一摇”的体验。
关于ios - 摇动一个 UIView ... 但是使用 UIKit Dynamics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24356051/
我是gradle工具的新手,并获得了下一个项目。 TestNG测试某些类,并用@Test注释。 buid.gradle,那里有个小脚本。 test { dependsOn cleanRepor
有没有办法让 div 框在页面加载时抖动?比如可能只有一次或两次? 更新:在这个 URL 上我仍然无法加载页面,我做错了什么? http://tinyurl.com/79azbav 我想我卡在了页面加
我正在尝试为我的游戏调整 html 元素。 我在这里找到这段代码: shake = function (sprite, magnitude = 16, angular = false) { //A
我的意图是在用户执行摇动手势时清空 2 个数组内的值 - force[] 和 stiffness[],来自 prepareforsegue 的另一个类。下面是我的代码,然后是我遇到的错误。 sprin
您好,如果用户名/密码输入错误,我想让我的 div 摇动。我尝试过的方法显然行不通...我认为这可能与我使用 javascript 的方式有关。提前致谢。 HTML/PHP/JavaScript:
是否可以在显示主屏幕时摇动 iPhone 并打开我的应用程序? 例如:触发 (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)
我正在尝试在此代码中替换我的核心动画摇动效果 let shake = CAKeyframeAnimation(keyPath: "position.x") shake.values =
有时会出现创建目录mkdir的情况不是正确的工具。可能是git clone或rsync或mount 。所以当我们有这样的规则时: needDir dirs = filterM ((fmap not)
我需要创建一个带有子菜单的非常简单的响应式菜单。我目前遇到的问题是我的子菜单“抖动”,我不明白为什么。 谢谢! 这是我的HTML
我想在 Android 设备上捕捉“TAP”。例如,假设设备在用户的口袋里。然后他从口袋里摸了摸手机两次,并以一种特殊的方式摸了摸。比如说,用两个/三个手指敲打,比如“TAP -- TAP”。我想捕捉
在我的 iOS 应用程序中,我的屏幕上有一堆具有摆动效果的图标。当我按住其中一个时,它们开始摇晃(就像 iPhone 的菜单一样),但如果我按下主页按钮(将我的应用程序发送到后台),iPhone 就会
插入错误后,我想摇动一个文本字段。 为此,我编写了一个静态抖动动画 public static void shake(Node node) { TranslateTransition tt = n
我是一名优秀的程序员,十分优秀!