2010-05-02 9 views
6

यह काफी आईफोन क्वाड्री है। मैं पुस्तकालय पर काम कर रहा हूं, लेकिन मेरी समस्या को बहुत सरल कोड में कम कर दिया है। यह कोड क्या करता है 50x50 व्यू बनाता है, कुछ डिग्री के घूर्णन परिवर्तन को लागू करता है, फिर फ्रेम को कुछ बार बदल देता है। नतीजा यह है कि 50x50 व्यू अब बहुत बड़ा दिख रहा है।एक ट्रांसफॉर्म का उपयोग करके घुमाएं, फिर फ्रेम मूल बदलें, और विस्तार देखें?

// a simple 50x50 view 
UIView *redThing = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)]; 
redThing.backgroundColor = [UIColor redColor]; 

[self.view addSubview:redThing]; 

// rotate a small amount (as long as it's not 90 or 180, etc.) 
redThing.transform = CGAffineTransformRotate(redThing.transform, 0.1234); 

// move the view down 2 pixels 
CGRect newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height); 
redThing.frame = newFrame; 

// move the view down another 2 pixels 
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height); 
redThing.frame = newFrame; 

// move the view down another 2 pixels 
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height); 
redThing.frame = newFrame; 

// move the view down another 2 pixels 
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height); 
redThing.frame = newFrame; 

तो, क्या बिल्ली चल रहा है:

यहाँ कोड है? अब, यदि मैं एक अनुवाद परिवर्तन लागू करके दृश्य को स्थानांतरित करता हूं, तो यह ठीक काम करता है। लेकिन ऐसा नहीं है कि मैं क्या करना चाहता हूं और यह वैसे भी काम करना चाहिए।

कोई भी विचार?

+0

शायद परिवर्तन के बाद परिवर्तन लागू किया जा रहा है? – Artelius

उत्तर

14
UIView प्रलेखन से

:

तो बदलना संपत्ति भी सेट किया गया है, सीमा और केंद्र गुण के बजाय का उपयोग करें; अन्यथा, फ्रेम प्रॉपर्टी में परिवर्तन एनिमेट करना दृश्य के वास्तविक स्थान को सही ढंग से प्रतिबिंबित नहीं करता है।

चेतावनी: यदि परिवर्तन संपत्ति पहचान परिवर्तन नहीं है, तो इस संपत्ति का मूल्य अपरिभाषित है और इसलिए इसे अनदेखा किया जाना चाहिए।

दूसरे शब्दों में, मैं frame संपत्ति से सावधान रहना होगा जब एक transform निर्धारित है।

+1

वाह। धन्यवाद ... दस्तावेज़ों में नहीं देखा था। चौंका देने वाला। – ZaBlanc

+0

@ZaBlanc, यदि यह सही उत्तर है तो आपको इसे इस तरह चिह्नित करना चाहिए। –

+0

हो गया। मैंने बस 5 मिनट पहले चेकमार्क के बारे में सीखा। अब मेरे सभी पुराने पदों पर इसके लिए तैयार करना। ;-) – ZaBlanc

संबंधित मुद्दे