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