2012-06-04 9 views
5

मैं अपने वर्तमान आईफोन एप्लिकेशन में अभिविन्यास परिवर्तनों को संभालने में सक्षम होना चाहता हूं। समस्या यह है कि मैं नहीं चाहता कि मेरे नियंत्रक के दृश्य को घुमाएं या आकार बदलें। जब डिवाइस अभिविन्यास बदलता है, तो मैं बस एक यूआई तत्व स्क्रीन पर 90 डिग्री घुमाएगा।जब कोई आईओएस डिवाइस घुमाता है, तो मैं केवल एक तत्व को अभिविन्यास कैसे बदलूं?

ऐप्पल का कैमरा एप्लिकेशन इसका एक आदर्श उदाहरण है - जब डिवाइस अभिविन्यास बदलता है, तो सभी बटन घूमते हैं, लेकिन दृश्य स्वयं घूमता नहीं है।

मुझे लगता है कि मैं सिर्फ दृश्य का आकार बदल सकता हूं, मेरे सभी तत्वों को चारों ओर ले जा सकता हूं, और फिर बटन एनिमेट कर सकता हूं, लेकिन मुझे लगता है कि ऐसा करने का एक आसान तरीका होना चाहिए।

अग्रिम धन्यवाद।

उत्तर

5

1) आप 2 दृश्य पदानुक्रम और परिवर्तन जो willRotateToInterfaceOrientation: see this question

2 में स्क्रीन पर है बना सकते हैं) या आप अपने सभी रोटेशन को see this question

को संभाल सकते हैं
+1

विकल्प 2 सही था।मुझे सही दिशा बताने के लिए धन्यवाद। मुझे किसी कारण से उसे ढूंढने में परेशानी थी। मैं आपकी पोस्ट और नमूना कोड की सराहना करता हूं। बहुत बढ़िया!! – tnbeatty

+0

@tnbeatty मैंने संदर्भित उत्तर में एक संपादन किया, क्योंकि यह UIDeviceOrientation के कुछ मूल्यों को गलत तरीके से संभाला – Jiri

2

आप उपयोग कर सकते हैं

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    { 
if(interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) 
    { 
     //Change frames as per orientations 
    } 

    else 
    {  
      //Change frames as per orientations 
    } 


    return NO; 
    } 

और रुचि के आधार पर मैन्युअल रूप से UI तत्व आप बदलना चाहते हैं के फ्रेम निर्धारित किया है। आप this doc के Constants से सभी अभिविन्यास तक पहुंच सकते हैं।

संपादित करें: आप इस मुद्दे के लिए एनएसएनोटिफिकेशन का उपयोग कर सकते हैं।

UIApplicationDidChangeStatusBarOrientationNotification 

जब आवेदन के यूजर इंटरफेस के उन्मुखीकरण परिवर्तन प्रकाशित किया गया था।

उपयोगकर्ताइन्फो शब्दकोश में एक NSNumber ऑब्जेक्ट होता है जो को UIInterfaceOrientation मान (UIInterfaceOrientation देखें) को समाहित करता है। यह मान उपलब्धता

Available in iOS 2.0 and later. 

UIApplication.h में घोषित पहुँचने के लिए UIApplicationStatusBarOrientationUserInfoKey का प्रयोग करें

+0

यह एक अच्छा विचार है - यही मैंने पहले किया था। समस्या यह है: डिवाइस UIInterfaceOrientationPortrait में शुरू होता है कहें। यदि उपयोगकर्ता डिवाइस को UIInterfaceOrientationLandscapeLeft में बदल देता है, तो मैं उस परिवर्तन का पता लगा सकता हूं और फिर फ्रेम बदल सकता हूं। यदि उपयोगकर्ता फिर UIInterfaceOrientationPortrait पर घूमता है, तो इस विधि को नहीं कहा जाएगा। – tnbeatty

+0

दिलचस्प है, मेरे प्रयोग में, इस दिनचर्या को हर घूर्णन (सत्य) कहा जाता है जो होता है। – trumpetlicks

+1

मुझे स्पष्टीकरण देना चाहिए: मेरी पिछली टिप्पणी में, -ShouldAutorotateToInterfaceOrientation को नहीं कहा जाएगा क्योंकि डिवाइस अभिविन्यास वास्तव में कभी नहीं बदला जाता है। इस प्रकार, फोन सोचता है कि यह पोर्ट्रेट में है और जब डिवाइस पोर्ट्रेट पर वापस आता है तो इस विधि को कॉल नहीं करेगा। क्या इसका कोई मतलब है? – tnbeatty

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