簡體   English   中英

iOS-如何捕獲UIView屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM