swift UIImpactFeedbackGenerator类的impactOccurredWithIntensity方法的有效值范围是多少?

cwxwcias  于 2023-06-28  发布在  Swift
关注(0)|答案(1)|浏览(211)

在iOS 13+中,iOS UIKit类UIImpactFeedbackGenerator有一个示例方法impactOccurredWithIntensity,它接受一个CGFloat参数intensity。文档声明是(在Objective-C中):

- (void)impactOccurredWithIntensity:(CGFloat)intensity;

在提出此问题时,链接的文档页面没有提供关于intensity参数的有效值范围以及该值具有何种影响的信息。
(Is范围0到1?0到无穷大?其他最大?是否允许负值?值越大是否会产生更强烈的触觉反馈?intensity值如何与各种UIImpactFeedbackStyle values(如UIImpactFeedbackStyleHeavy)交互,以初始化UIImpactFeedbackGenerator?)
此外,在提出这个问题时,一个简单的Google search for impactOccurredWithIntensity除了链接的Apple文档页面之外,没有产生任何有意义的结果。
我的问题是:impactOccurredWithIntensity方法的intensity参数的有效值范围是什么?该值有什么具体影响?

fiei3ece

fiei3ece1#

intensity参数是介于0.01.0之间的值,用于表示冲击力。(此方法的头声明和文档都表明了这一点;在您最初提出这个问题后,文档可能已经更新了。)就它如何影响触觉输出而言,您可以将intensity视为每次撞击时播放的触觉振动的音量/强度。
初始化撞击反馈生成器时,选择的style用于描述撞击中涉及的UI元素的物理属性,例如,它们是轻、重、软还是硬。style会影响撞击发生时播放的触觉波形的类型,例如振动是否更像是快速的敲击声、沉闷的重击声等。
style在初始化时被烘焙到UIImpactFeedbackGenerator中的原因是因为style应该在相同UI元素的多次影响中保持一致。另一方面,intensity是每次碰撞的参数,因为它通常是UI元素碰撞时移动速度的函数。
由您决定哪些参数最适合您的用例。选择如何将不同的撞击速度Map到intensity的归一化0.0 - 1.0范围是您需要定义的。最终,您需要在真实的设备上试验和调整参数,以产生引人注目的体验,增加交互,而不会分心。

相关问题