2015-11-13 38 views
1

我有一個UIView的視角,我想稍微改變,因爲用戶旋轉他的設備。例如,當用戶向右傾斜時,我希望視圖的左側「上升」,而正確的大小「進入」,但僅限於某個點。 這裏是我到目前爲止的代碼:如何在CATransform3D之後重置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

您是否嘗試將layoutIfNeeded發送到父視圖以在您的方向更改後強制重新佈局?

+0

這將如何有用? – cyril