[英]iOS - How to capture UIView properties
在我的應用程序中,我有一個UIView
。 用戶可以旋轉,更改大小,更改此UIView
位置。 我想捕獲UIView
每個狀態並將其保存在數組中。
例如,用戶移動視圖,然后旋轉視圖,然后調整視圖大小。 我想將所有這三個視圖保存在一個數組中:
[mutableArray addObject:view1]; //when user moves
[mutableArray addObject:view1]; //when user rotate
[mutableArray addObject:view1]; //when user resize
但是,當我這樣做時,我會在當前狀態下獲得相同的UIView
。 如何捕獲此UIView
所有3個狀態?
如果要捕獲並保存陣列上的視圖,則需要實例化一個新對象。 您現在要做的只是創建淺表副本 ,即保存指向同一對象的指針,而不是保存指向對象副本的指針。
你應該做:
[mutableArray addObject:[view1 copy]];
這將創建對象的精確副本,並將其添加到數組中。
這不是您想要實現的推薦方法。 就像注釋中指出的那樣,您應該保存對象的屬性並在需要時重新創建,而不要將完整的視圖對象保存在數組中。
取決於要對保存的視圖執行的操作。 您代碼所做的全部工作就是將對視圖的引用保存在數組中。 您可能想要按照nunofmendes的建議復制對象,或者按照paulvs的建議復制屬性。 但是,如果您想捕獲當時的視圖,請使用[view snapshotViewAfterScreenUpdates].
[mutableArray addObject:[view1 snapshotViewAfterScreenUpdates:YES]]; //when user moves
[mutableArray addObject:[view1 snapshotViewAfterScreenUpdates:YES]]; //when user rotate
[mutableArray addObject:[view1 snapshotViewAfterScreenUpdates:YES]]; //when user resize
您最終將得到一個視圖對象數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.