ios – 摇动UIView ……但是使用UIKit Dynamics

ios – 摇动UIView ……但是使用UIKit Dynamics,第1张

概述在很多情况下你需要“摇动”UIView. (例如,“吸引儿童用户注意控件”,“连接速度慢”,“用户输入错误输入”等等.) 使用UIKit Dynamics可以做到这一点吗? 所以你必须…… >看看,0,0 >添加一个d簧概念 >给它一个轻推,对“左”说 >它应该在d簧上向后摆动,最终再次稳定在0,0 这可能吗?我在Apple演示中找不到一个例子.干杯 请注意,正如Niels在下面明确地解释的那样, 在很多情况下你需要“摇动”UIVIEw.

(例如,“吸引儿童用户注意控件”,“连接速度慢”,“用户输入错误输入”等等.)

使用UIKit Dynamics可以做到这一点吗?

所以你必须……

>看看,0
>添加一个d簧概念
>给它一个轻推,对“左”说
>它应该在d簧上向后摆动,最终再次稳定在0,0

这可能吗?我在Apple演示中找不到一个例子.干杯

请注意,正如NIEls在下面明确地解释的那样,d簧不一定是你想要的某些情况的“物理感觉”:在其他情况下它可能是完美的.据我所知,iOS自己的应用程序(例如消息等)中的所有物理现在都使用了UIKit Dynamics,所以对我而言,值得一提的是“UIVIEw在d簧上d跳”.

为了清楚起见,当然你可以做一些“相似”的事情,只需动画即可.例…

但现在,这与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) ]        ];    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];

>其次,向该动画师添加附件行为以便在当前位置查看.这将使它在推动完成后回d.您必须使用阻尼和频率值.

UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:vIEwToShake attachedToAnchor:vIEwToShake.center];attachment.damPing = 0.5;attachment.frequency = 5.0;[self.animator addBehavior:attachment];

这些值并不完全正确,但也许它是您实验的起点.
>应用推送行为(UIPushBehaviorModeInstantaneous)来扰乱它.然后,附着行为将导致其d回.

UIPushBehavior *push = [[UIPushBehavior alloc] initWithItems:@[vIEwToShake] mode:UIPushBehaviorModeInstantaneous];push.pushDirection = CGVectorMake(100,0);[self.animator addBehavior:push];

就个人而言,我并不是对这个特殊的动画感到疯狂(阻尼的曲线对我来说感觉不太合适).我倾向于使用基于块的动画向一个方向移动(使用UIVIEwAnimationoptionCurveEaSEOut),完成时启动另一个以相反方向移动它(使用UIVIEwAnimationoptionCurveEaseInOut),然后在完成后,使用animateWithDuration的usingSpringWithdamPing再现移动它回到原来的位置.恕我直言,这产生了一种曲线,感觉更像是“摇晃如果错误”的体验.

总结

以上是内存溢出为你收集整理的ios – 摇动UIView ……但是使用UIKit Dynamics全部内容,希望文章能够帮你解决ios – 摇动UIView ……但是使用UIKit Dynamics所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1077042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存