2010-06-18 62 views
1

當設備旋轉到橫向時,我正在使用以下命令來縮放和重新定位UIView圖層。旋轉時出現Transform.Translation問題

[containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.x"]; 
[containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.y"];  
[containerView.layer setValue:[NSNumber numberWithFloat: 1] forKeyPath: @"transform.scale.x"]; //[NSNumber numberWithInt:1] 
[containerView.layer setValue:[NSNumber numberWithFloat: 1] forKeyPath: @"transform.scale.y"]; 

然後如下因素旋轉回畫像時

[containerView.layer setValue:[NSNumber numberWithFloat: -75] forKeyPath: @"transform.translation.x"]; 
[containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.y"];  
[containerView.layer setValue:[NSNumber numberWithFloat: .7] forKeyPath: @"transform.scale.x"]; //[NSNumber numberWithInt:1] 
[containerView.layer setValue:[NSNumber numberWithFloat: .7] forKeyPath: @"transform.scale.y"]; 

的問題是,rotaing回畫像後,該層是「旅行」,即在x,y偏移正在逐漸改變(增加x,減少y)。比例似乎很好(即不增加,在重複旋轉時遞減)

任何人都可以提出一個合適的解決方案嗎?

+0

如果我刪除縱向模式下的比例尺,問題就會消失,所以我想這個順序可能很重要。或者我需要將transalte和scale操作分離成單獨的方法? – 2010-06-19 13:39:59

+0

訂單可能很重要。嘗試在翻譯後進行比例操作。 – JAB 2010-06-21 13:53:13

回答

0

也許是由於在某種程度上所有浮點數實現中存在的浮點舍入錯誤?雖然如果是這樣的話,你最好的選擇可能就是在你的代碼中做某種截斷或舍入。

編輯:嘗試做一些事情,如使用一個較小的x翻譯在變換回來,或使用正x譯文和非零翻譯。

事實上,如果每次翻譯的金額保持不變,那麼它可能與您提供的翻譯有關。您可能過度補償了首先需要翻譯的任何內容,這可能是問題的根源。

+0

沒有偏移,每個旋轉回肖像遠遠多於浮點錯誤 – 2010-06-18 19:51:56

+0

@echo_bach:那麼我明白了。改寫我的答案。 – JAB 2010-06-18 20:01:58