ios - 使用加速度计移动、摆动、连接到弹簧的 UIView
问题描述
假设您有一个简单的方形 UIView 坐在视图控制器的视图中:
@IBOutlet var redSquare: UIView!
想象一下它可以稍微向上/向下向左/向右移动。TBC 它只是停留在同一个完全正常的 3D 平面上,它仍然是玻璃屏幕上的一个普通的“红色方块”;它甚至不旋转。
在 iOS (1) 中,您可以访问运动管理器...
let mm: CMMotionManager = CMMotionManager()
mm.startAccelerometerUpdates()
并且您可以(2)沿线制作一个物体“连接到弹簧”......
sumthin.physicsBody.dynamic = true
sumthin.physicsBody.affectedByGravity = false
sumthin.physicsBody.mass = 1
最后(3)您可以根据加速度计对物体施加力,例如...
f = mm.accelerometerData
sumthin.physicsBody.applyForce(
CGVectorMake(CGFloat(f.acceleration.x), CGFloat(f.acceleration.y)))
目标:当你摇晃手机时......
红色方块将简单地向上/向下“摆动”,左右有点(可能是 10 点左右,只是为了清楚起见);当你停止移动你的手时,它会像弹簧一样回到原来的位置。
你是怎么做到的,用一个普通的 UIView?
解决方案
推荐阅读
- javascript - 是什么阻止我的 jquery 函数执行 ajax 脚本
- angular - 默认图像未显示,而 Angular 4 中的配置文件图像为空
- php - elseif 不能按预期在 php 中工作
- javascript - 在可拖动的div下获取文本(jquery)
- javascript - 做什么和意思是?
- tensorflow - 冻结 mobilenet_v2 (freeze_graph.py)
- javascript - 如何在 JS 中使用三元运算符进行返回?
- apache - 关闭centos 6时重新启动Apache
- tensorflow - Tensorflow Data API:在 CPU 上训练时预取?
- wso2dss - WSO2 DSS - odata 过滤器不起作用