2012-05-23 14 views
5

मेरे पास एक दृश्य है जिसमें मैं drawRect में कुछ विशिष्ट चित्र कर रहा हूं। ये चित्र गतिशील हैं और दृश्य की चौड़ाई और ऊंचाई पर आधारित हैं। फिर, जिस दृश्य में यह शामिल है, उसमें घूर्णन परिवर्तन लागू होता है। हालांकि यह परिवर्तन मेरे दृश्य के फ्रेम के मानों को समायोजित करने लगता है जो drawRect में मेरे चित्र को प्रभावित करता है।आईओएस दृश्य परिवर्तन फ्रेम को संशोधित करता है?

एनएसएलओजी (@ "पहले:% एफ,% एफ,% एफ,% एफ", बटन.फ्रेम.ऑरिगिन.एक्स, बटन.फ्रेम.ऑरिगिन.ई, बटन.फ्रेम.size.width, बटन.फ्रेम .size.height);

से पहले: 50.000000,100.000000,150.000000,50.000000 के बाद: 65.849365,47.548096,118.301262,154.903809

यह सही व्यवहार है या मैं परिवर्तन को गलत ढंग से लागू करने के हूँ

CGAffineTransform currentTransform = button.transform; 
    CGAffineTransform transformRotate = CGAffineTransformMakeRotation(degreesToRadians); 
    button.transform = transformRotate; 

    NSLog(@"after:%f,%f,%f,%f",button.frame.origin.x,button.frame.origin.y,button.frame.size.width,button.frame.size.height); 

यहाँ उत्पादन होता है ?

उत्तर

12

UIView's frame property पर संदर्भ दस्तावेज देखें;


फ्रेम

फ्रेम आयत, जो अपने superview के समन्वय प्रणाली में दृश्य के स्थान और आकार का वर्णन है।

@property(nonatomic) CGRect frame 

चेतावनी

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


कि चेतावनी के बावजूद, चीजों के रूप में इरादा काम करते हैं। एक बार एक रूपांतरण (अन्य पहचान) लागू हो जाने पर, फ्रेम आमतौर पर मूल दृश्य के प्रक्षेपण आयत में परिणाम देता है। लेकिन फिर, आपको उस चेतावनी को अनदेखा नहीं करना चाहिए यदि आप वास्तव में लागू परिवर्तन के साथ फ्रेम के बारे में जानना चाहते हैं और इसे ठीक से प्राप्त करने के लिए CGRectApplyAffineTransform का उपयोग करें।

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