0
我在故事板下發現了一個奇怪的問題;
我已經拖動了UIImageView
,它傳遞給UIView
內的必要幀(並且可以返回)。要做到這一點,我分類UIImageView
和改變框架觸摸代表。如果我不改變當前的視圖,一切都可以。更改故事板中的視圖刪除所有視圖的位置
後視圖翻轉,並在相同的位置返回後,我看到的物體,就像什麼也沒有發生過:
我可以在內部存儲所有對象的位置,但爲什麼iOS版不要保存所有的幀更改?
我在故事板下發現了一個奇怪的問題;
我已經拖動了UIImageView
,它傳遞給UIView
內的必要幀(並且可以返回)。要做到這一點,我分類UIImageView
和改變框架觸摸代表。如果我不改變當前的視圖,一切都可以。更改故事板中的視圖刪除所有視圖的位置
後視圖翻轉,並在相同的位置返回後,我看到的物體,就像什麼也沒有發生過:
我可以在內部存儲所有對象的位置,但爲什麼iOS版不要保存所有的幀更改?
當您切換到不同的視圖並在您切換回來時重新加載視圖時,視圖可能會被釋放。當然,新視圖有新的子視圖,並且每個視圖都根據故事板或.xib文件中的數據進行定位。
iOS開發的一個基本規則是你不應該使用視圖來存儲應用程序狀態。如果需要保留視圖的位置,則應將這些位置存儲在應用程序的模型中。視圖控制器應執行-viewDidLoad
方法從模型中獲取位置並相應地設置子視圖。
所以,你提到的是我必須存儲當前UIView對象的所有CGpoints,例如,appdelegate屬性,並且當viewwillappear會調用時,還原它? – user170317 2013-05-01 14:12:13
@ user170317最好不要直接放在應用程序委託的屬性中,而應放在應用程序數據模型的某個獨特對象中(儘管應用程序委託對模型有引用並不罕見)。你的應用程序在哪裏存儲其餘的數據?無論你存儲哪些信息,視圖控制器都需要知道如何找到它。您可以在-viewDidLoad或-viewWillAppear中設置子視圖 - 應該可以正常工作。 – Caleb 2013-05-01 14:26:25
看起來比需要複雜得多。如果我移動子視圖,更好的解決方案將保持立場,不要將它們移出:)。蘋果關心爲我們做更多的編碼:)。無論如何,TNX的解釋。 – user170317 2013-05-02 05:47:09