5

मेरे पास UIWebView है कि मैं अपने पोर्ट्रेट या लैंडस्केप के आधार पर अलग-अलग यूआरएल लोड करना चाहता हूं। मैं कैसे पता लगा सकता हूं कि मेरा वर्तमान अभिविन्यास viewWillAppear के अंदर क्या है?आईओएस: मैं व्यूविल्लियर में वर्तमान अभिविन्यास को कैसे समझूं?

उत्तर

14

UIAplplication की statusBarOrientation संपत्ति का उपयोग करें। यदि आप UIDeviceOrientationFaceUp या UIDeviceOrientationFaceDown पर डिवाइस अभिविन्यास का उपयोग करते हैं तो आप समस्याओं में भाग ले सकते हैं।

उदाहरण

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; 
if (UIInterfaceOrientationIsLandscape(orientation)) 
{ 
    // Do something when in landscape 
} 
else 
{ 
    // Do something when in portrait 
} 
+0

आईओएस 9 में बहिष्कृत – trickster77777

2

एप्लिकेशन लोड हो जाए, यह अपने वर्तमान orientation- पता नहीं है

UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation]; 
if (orientation == UIDeviceOrientationPortrait) { 
    NSLog(@"portrait");// only works after a rotation, not on loading app 
} 

एक बार जब आप डिवाइस घुमाने के लिए, आप सही ओरिएंटेशन मिलता है, लेकिन जब एप्लिकेशन भरी हुई है, अभिविन्यास बदले बिना, ऐसा लगता है कि [[UIDevice currentDevice] orientation] का उपयोग कर वर्तमान अभिविन्यास को नहीं पता है।

तो तुम 2 बातें करने की ज़रूरत है -

  1. plist फ़ाइल में आवेदन के स्वीकार किए जाते हैं डिवाइस झुकाव सेट करने का प्रयास
  2. अपने UIViewControllers में, आप जब एप्लिकेशन हाँ लौटने के लिए shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) विधि ओवरराइड करने के लिए की आवश्यकता होगी rotate:
+0

मुझे लगता है कि आप मेरे सवाल का गलत समझा - मेरी झुकाव ठीक बदल (मैं shouldAutorotate पहले से ही परिभाषित किया है), लेकिन मुझे पता है कि मैं देखने के लिए जो उन्मुखीकरण मैं देख सकते हैं कि चर चाहते वर्तमान में – Gibson

+0

मेरा अद्यतन उत्तर देखें। आपको लागू करने की आवश्यकता है - 'UIInterfaceOrientation Oriitation = [[UIDevice currentDevice] ओरिएंटेशन]; ' –

+1

@ श्रीकर मैंने इस उद्देश्य के लिए' [[UIDevice currentDevice] ओरिएंटेशन] का उपयोग किया और एक बार मेरे कोड में एक बग होने पर अभिविन्यास' UIDeviceOrientationFaceUp' या 'UIDeviceOrientationFaceDown'। यही वह समय था जब मैंने 'UIpplication sharedAplication] .statusBarOrientation' का उपयोग करने के लिए स्विच किया, जो 'UIDeviceOrientation' के बजाय' UIInterfaceOrientation' प्रकार का है। ध्यान दें कि इस कोड के लिए आपको काम करने के लिए स्टेटसबार दिखाना नहीं है। मुझे लगता है कि बदलाव करने से पहले मैं मैक्रो 'UIDeviceOrientationIsLandscape (deviceOrientation)' का उपयोग कर रहा था, जब मैं चेहरे पर/चेहरे से नीचे चला गया। – Sam

1

चाहिए तो प्रासंगिक कॉल की अनुक्रमण मतलब है कि आप तो viewWillAppear पर सही मान होने interfaceOrientation पर भरोसा नहीं कर सकते है - कोष्ठक संभालने टी नियंत्रक घुमाता है - सबसे सुरक्षित बात शायद self.parentViewController.interfaceOrientation है। यह विफल हो रहा है कि आप [[UIDevice currentDevice] orientation] से पहली धारणा बनाने का प्रयास कर सकते हैं, जो हमेशा पैसे पर 100% नहीं हो सकता है (उदाहरण के लिए यदि आपका ऐप लॉन्च होने पर डिवाइस टेबल पर फ्लैट झूठ बोल रहा हो) लेकिन आपको हमेशा से बेहतर अनुमान देने की संभावना है चित्र धारण करना

4
UIDeviceOrientation getCurrentOrientation() { 
    UIDevice *device = [UIDevice currentDevice]; 
    [device beginGeneratingDeviceOrientationNotifications]; 
    UIDeviceOrientation currentOrientation = device.orientation; 
    [device endGeneratingDeviceOrientationNotifications]; 

    return currentOrientation; 
} 

यह आप पर निर्भर है UIDeviceOrientationUIInterfaceOrientation कन्वर्ट करने के लिए।

+0

यह एकमात्र ऐसा समाधान है जो मेरे लिए काम करता है! धन्यवाद! – maza23

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