2012-07-02 7 views
5

मैं एक UIView की एक प्रति बनाना चाहते हैं बनाने के लिए, और मैं न, क्योंकि मैं अक्सर कई बार देखा की एक प्रति बनाने रहा हूँ, और NSKeyedArchiver का उपयोग कर रहा था NSKeyedArchiver उपयोग करना चाहते हैं धीमी गति से।कैसे (मूल UIView करने के लिए एक सूचक नहीं) UIView की एक प्रति

मैंने copy या initWithZone: के बारे में सुना, लेकिन गूगलिंग ने पाया कि यह UIView के लिए अच्छा नहीं है। मैं एक प्रतिलिपि नहीं चाहता जो मूल दृश्य को इंगित करे क्योंकि इसमें किए गए किसी भी बदलाव से कॉपी किए गए UIView में परिवर्तन भी आएंगे।

+0

आप किसी दृश्य को कॉपी नहीं कर सकते। यदि आप "प्रतिलिपि" चाहते हैं तो आपको या तो एनएससीओडी (कुंजी संग्रहित सामग्री) के साथ एक गहरी प्रतिलिपि करना है या आपको कुछ प्रतिस्पर्धी डेटा ऑब्जेक्ट को कार्यान्वित करना होगा जो आपका दृश्य स्वयं को सेट अप करने और अपडेट करने के लिए उपयोग करता है, फिर उसे एक स्टॉक से कॉपी करें इसे देखें और इसे दूसरे में जोड़ें। लेकिन एक दृश्य को "कॉपी" करने का कोई तरीका नहीं है। –

+0

रुको, जब आप कहते हैं कि आप एक प्रतिलिपि चाहते हैं जो मूल को इंगित करती है तो क्या आपका मतलब है कि आप एक ही दृश्य को 2 अलग-अलग स्थानों में देखना चाहते हैं? –

+0

मैं सिर्फ एक विशेष क्षण में किसी अन्य यूवीव में यूवीव की स्थिति को सहेजना चाहता था क्योंकि मैंने स्पर्श के साथ यूविएव के घूर्णन, स्केलिंग और आंदोलन को लागू किया है। तो क्या आप मुझे बता सकते हैं कि यूआईवी व्यू के गुणों की प्रतिलिपि कैसे कॉपी की जा सकती है, अगर इसे प्रतिलिपि नहीं बनाया जा सकता है .. thnx –

उत्तर

-4

एक UIView श्रेणी बनाएं जो दृश्य को कॉपी करने में मदद कर सकता है। कुछ इस तरह:

- (id) copyView { 
    UIView *a = [[UIView alloc]init]; 
    a.frame = self.frame; 
    //set all other properties of the UIView 
    return a; //return [a autorelease] if not using ARC 
} 
+0

यह वांछित दृश्य के सभी गुणों की प्रतिलिपि नहीं करेगा – Saad

0

आप एक दृश्य का उपयोग कर कॉपी कर सकते हैं:

TheView *copyOfView = (TheView *) [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:origionalTheView]];