0
我有幾行代碼將北圖標放在地圖上。此圖標稍微移動一下,如果地圖旋轉,則該圖標必須朝北。爲什麼UIView旋轉變換必須在定位之前重置?
但爲了使這項工作,我不得不添加一行我不明白的代碼。
northIcon.transform = CGAffineTransform.identity // why do I need this line?
northIcon.frame.origin.x = insets.left + 8
northIcon.frame.origin.y = insets.top + 25
northIcon.transform = CGAffineTransform(rotationAngle: site.angle)
如果沒有第一線,第一時間這段代碼運行它工作正常,但通過它下一次運行變得非常微小,直到它消失了,就好像它在某種程度上我不調整相對於以前的狀態不會的。我通過強制轉換爲身份,然後移動它,然後將其旋轉回來來解決此問題。
但爲什麼我必須將變換設置爲標識?我的理解是,幀的計算完全獨立於變換。然後在這之後,變換開始並改變最終視圖的繪製位置/方式。
但很明顯這是錯誤的,因爲如果它是真的,我不需要首先重置變換。
有人知道這裏發生了什麼嗎?
有趣的是,這似乎是一個_odd_設計選擇......並且'view.frame.center'是一個沒有setter的getter。那麼我的解決方案是否合理呢?還是有更優雅的方法? –
你想使用'view.center'。 –
它是'view.center',而不是'view.frame.center'。 –