2015-11-19 23 views
1

我想創建一個視差效果,如iPhone的主屏幕在背景移動作爲傾斜您的手機。到目前爲止我已經達到了這個目標,但我仍然有一個問題。在我傾斜手機並且背景移動之後,它非常緩慢地移回到居中位置。UIInterpolatingMotionEffect視差效應斯威夫特2的iOS

這不是限制。我刪除了中心x/y約束,它仍然慢慢地滑回,好像它正在重新校準到新的位置。唯一的另一個約束是比率。所以這不是約束。

有什麼想法?

代碼很簡單:

let leftRightMin = CGFloat(-50.0) 
let leftRightMax = CGFloat(50.0) 
let upDownMin = CGFloat(-35.0) 
let upDownMax = CGFloat(35.0) 

let leftRight = UIInterpolatingMotionEffect(keyPath: "center.x", type: 
            UIInterpolatingMotionEffectType.TiltAlongHorizontalAxis) 
leftRight.minimumRelativeValue = leftRightMin 
leftRight.maximumRelativeValue = leftRightMax 

let upDown = UIInterpolatingMotionEffect(keyPath: "center.y", type:  
            UIInterpolatingMotionEffectType.TiltAlongVerticalAxis) 
upDown.minimumRelativeValue = upDownMin 
upDown.maximumRelativeValue = upDownMax 

let fxGroup = UIMotionEffectGroup() 
fxGroup.motionEffects = [leftRight, upDown] 

backgroundImage.addMotionEffect(fxGroup) 

爲什麼會傾斜,以及如何解決它後慢慢圖像居中回任何想法?

+0

你有沒有試圖消除制約因素,並確保這是什麼問題? – mhillsman

+0

@mhillsman我剛剛編輯帖子。我刪除了中心x/y約束,它仍然慢慢地滑回原位,就好像它正在重新校準到新的位置。 –

回答

2

這是UIInterpolatingMotionEffect行爲。您會注意到它也發生在主屏幕以及系統中使用該效果的其他任何地方。

它這樣做是因爲有時用戶會以這樣的方式,內容插值到最大位置,但不返回到中心或靜止位置移動他們的設備。這意味着曾經是最大內插位置的位置現在是靜止中心,所以當設備再次移動並且效果可以繼續時,內容必須移回原始位置。

我沒有發現的這種行爲在UIInterpolatingMotionEffect documentation任何提及,但可以觀察到到處系統使用效果。

+0

啊。謝謝,我擔心這只是正常的行爲。是的,它可以避免它可能會顯示空白空間。我只是不喜歡它回退的速度。這是顯而易見的。在主屏幕上,您必須真正注意注意。 –