2009-09-13 11 views
6

जब आप फोन के अभिविन्यास को लैंडस्केप मोड में सेट करते हैं तो दृश्य के पीछे वास्तव में क्या चल रहा है? जब मैंने मुख्य स्क्रीन की सीमाओं और किसी भी सबव्यू की सीमाओं का पता लगाया, तो चौड़ाई और ऊंचाई अभी भी 4x320 की बजाय 320x480 है।आईफोन ऐप लैंडस्केप मोड में है, लेकिन दृश्य की सीमा अभी भी चित्र

कोई विचार क्यों?

उत्तर

0

मुद्दा मिला - कारण है कि सीमा अभी भी एक रोटेशन के बाद एक ही है, क्योंकि केवल एक चीज एक रोटेशन के बाद प्रभावित दृश्य की संपत्ति को बदलने है।

दृश्य के बदलने का एक त्वरित का पता लगाने मुझे इस देता है:

2012-01-31 12:19:02.114 TestScollviewRotation[9834:207] orientation: UIDeviceOrientationPortrait 
2012-01-31 12:19:02.116 TestScollviewRotation[9834:207] 0.000000 -1.000000 1.000000 0.000000 

2012-01-31 12:21:41.898 TestScollviewRotation[9834:207] orientation: UIDeviceOrientationPortraitUpsideDown 
2012-01-31 12:21:41.898 TestScollviewRotation[9834:207] 0.000000 1.000000 -1.000000 0.000000 

2012-01-31 12:21:58.780 TestScollviewRotation[9834:207] orientation: UIDeviceOrientationLandscapeRight 
2012-01-31 12:21:58.780 TestScollviewRotation[9834:207] 1.000000 0.000000 -0.000000 1.000000 

2012-01-31 12:19:03.181 TestScollviewRotation[9834:207] orientation: UIDeviceOrientationLandscapeLeft 
2012-01-31 12:19:03.181 TestScollviewRotation[9834:207] 1.000000 0.000000 -0.000000 1.000000 
1

क्या आप सीमा संपत्ति या फ्रेम संपत्ति की जांच कर रहे हैं? कुछ नियंत्रण, विशेष रूप से स्क्रीन को भरने वाले UIViews, किसी भी उन्मुखीकरण में समान फ्रेम को बनाए रखने के लिए प्रकट होते हैं; मुझे लगता है कि ऐपकिट अपनी सामग्री को घुमाने के लिए अपनी ट्रांसफॉर्म प्रॉपर्टी सेट करता है।

आपको शायद यह पता चलेगा कि सीमा संपत्ति में वह मूल्य है जो आप अधिकतर समय की अपेक्षा करते हैं, लेकिन फ्रेम संपत्ति नहीं है।

+0

मैं दोनों सीमा और फ्रेम की जाँच की, वे दोनों पोर्ट्रेट मोड जानकारी दर्शाती बाहर आ (अर्थात 320x480) – Boon

0

हां, फ्रेम और सीमाएं वही रहती हैं, आपको व्यू कंट्रोलर इंटरफेस ऑरेंटेशन प्रॉपर्टी की जांच करनी चाहिए, और तदनुसार चौड़ाई और ऊंचाई का इलाज करना चाहिए, यदि आपका लेआउट विशेष रूप से इन पर निर्भर करता है।

0

मुझे इस समय एक आईपैड एप्लिकेशन के साथ एक ही समस्या मिली है।

मैं इसे देखा गया interfaceOrientation पूछताछ की "हल" और अगर ऐसा है तो UIDeviceOrientationPortrait या UIDeviceOrientationPortraitUpsideDown तो मैं हस्तचालित रूप से अपने उप-परत के फ्रेम ध्यान में रखते हुए सेट (जो एक CAGradientLayer है)।

1

यह एक बड़ा विषय है, लेकिन मैं 0.02 की मात्रा जोड़ दूंगा; चित्र चित्र और परिदृश्य के बीच परिवर्तनों के लिए बाध्य हैं; यानी, ऊपर की तरह चीजें, सामना करना, सामना करना, और अज्ञात नहीं।

  1. यदि कोई दृश्य अभिविन्यास परिवर्तनों को नहीं सुन रहा है तो फ्रेम और सीमाएं अभिविन्यास के बावजूद समान रहेंगी।

  2. यदि कोई दृश्य अभिविन्यास परिवर्तनों को सुनने के लिए पंजीकृत है तो सीमा परिवर्तन हो सकती है; यानी, परिदृश्य में पूरे स्क्रीन फ्रेम < 320,480> जबकि सीमा < 480,320> है। यह मानता है:

    ए। आप या तो उचित YES वापसी मानों के साथ एक चाहिएअटोरोटेट टॉइंटरफेसऑरिएंटेशन कॉलबैक का उपयोग कर रहे हैं, या

    बी। UIDeviceOrientationDidChangeNotification को सुनने के लिए स्पष्ट रूप से अधिसूचना केंद्र के साथ पंजीकरण कर रहा है।

  3. दृष्टिकोण 2 ए केवल ऐप विंडो के मूल दृश्य नियंत्रक से संबंधित विचारों के लिए सत्य होगा; यही वह दृश्य नियंत्रक जिसका विचार पहले जोड़ा गया था। दृष्टिकोण 2 बी का उपयोग एफ़िन ट्रांसफॉर्म के साथ संयोजन में किया जा सकता है और मैनुअल ऑटोरोटेशन द्वारा नियंत्रित न किए गए विचारों के लिए उचित अभिविन्यास लेआउट प्राप्त करने के लिए सीमाएं बदलती हैं।

1

मैंने पाया कि अगर आप एक UINavigationController उपयोग नहीं कर रहे हैं कि आप अपने दृश्य सही दृश्य और फ्रेम सीमा नहीं दी जा रही है के साथ समस्याओं मिल सकती है।

मैं सीधे UIWindow में विचार जोड़ रहा था और वास्तव में यह समस्या थी। लेकिन जब मैंने UIWindow और मेरे UIViews के बीच एक UINavigationController को सैंडविच किया तो समस्या दूर हो गई।

आशा है कि मदद करता है

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