我有一个UIView,他的视角我想在用户旋转设备时稍微改变一下。例如,当用户向右倾斜时,我希望视图的左侧“上升”。而正确的尺寸进入'但只到某一点。 到目前为止,这是我的代码:
var dynamicTransform = CATransform3DIdentity
dynamicTransform.m34 = 1/(-500)
// Device Tilt
if motionManager.gyroAvailable {
motionManager.gyroUpdateInterval = 0.1/30
motionManager.startGyroUpdates()
motionManager.startGyroUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (gyroData, NSError) -> Void in
// Perspective Transform
dynamicTransform = CATransform3DRotate(dynamicTransform, CGFloat(Double(gyroData!.rotationRate.y) * M_PI / 1080.0), 0, 0.1, 0)
dynamicTransform = CATransform3DRotate(dynamicTransform, -CGFloat(Double(gyroData!.rotationRate.x) * M_PI / 1080.0), 0.1, 0, 0)
self.blueView.layer.transform = dynamicTransform
})
除了一些警告之外,一切都很有效:
1)当我回到设备的原始方向时,就像启动设备时一样,视图失真(即,仍然是应用了它的视角)。我的逻辑可能有问题,但我不知道是什么......
2)有时视图顺时针/逆时针旋转并且不会保持静止。
任何帮助将不胜感激, 谢谢!
答案 0 :(得分:0)
您是否尝试将layoutIfNeeded
发送到父视图以在更改方向后强制重新布局?