2015-10-02 6 views
6

अपने iPhone एप्लिकेशन पर छोड़कर सभी iPhones पर कहा जाता रहा है कि यह केवल परियोजना लक्ष्यों तैनाती की जानकारी के अंतर्गत चित्र को प्रतिबंधित कर दिया हैsupportedInterfaceOrientations 6 +

वहाँ एक पृष्ठ है कि मैं केवल परिदृश्य में देखना चाहते है और मैं supportedInterfaceOrientations विधि का उपयोग प्राप्त करने के लिए उस।

मानक कार्यान्वयन:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return UIInterfaceOrientationMask.Landscape 
    } 

यह iPhone 6 + को छोड़कर सभी iPhone उपकरणों और iOS संस्करण पर पूरी तरह से काम करता है। समर्थितInterfaceOrientations विधि कभी नहीं कहा जाता है।

मुझे कोई कारण नहीं मिल रहा है कि यह सिर्फ आईफोन 6+ को प्रभावित क्यों कर सकता है, किसी भी सुझाव की बहुत सराहना की जाएगी।

+0

मैंने अभी एक खाली एकल दृश्य एप्लिकेशन बनाया है और सत्यापित किया है कि 'समर्थित इंटरफेसऑरिएंटेशन() 'को 6 और 6 प्लस दोनों के लिए बुलाया गया था। तुरंत यह नहीं देख सकता कि आपका कोड अलग क्यों होगा जब तक कि व्यू कंट्रोलर एक नेविगेशन वीसी, स्प्लिट वीसी, टैब बार वीसी इत्यादि जैसी किसी अन्य चीज़ के लिए एक बाल दृश्य नियंत्रक नहीं है। इस मामले में सुनिश्चित करें कि अभिभावक दृश्य नियंत्रक भी आपके जैसा जवाब देता है चाहेंगे। मेरे सिर के शीर्ष से 6 प्लस के साथ केवल एक चीज अलग है, यह परिदृश्य में एक अलग दृश्य का उपयोग करने की क्षमता है। शायद कुछ वहाँ है? –

+0

आईफोन 6+ के लिए आकार वर्ग नियमित रूप से चौड़ाई होगी लेकिन भूस्खलन में प्रस्तुत किए जाने वाले सभी अन्य आईफ़ोन के लिए कॉम्पैक्ट चौड़ाई होगी। यह किस तरह का नियंत्रक है: एक सामान्य दृश्य नियंत्रक या एक कंटेनर। यदि इसे सामान्य रूप से प्रस्तुत किया जाता है, तो मेरा मानना ​​है कि आपको 'पसंदीदा इंटरफेसऑरिएंटेशन फोर प्रस्तुति' –

+0

दस्तावेज़ों के मुताबिक, 'समर्थित इंटरफेसऑरिएंटेशन' केवल रूट व्यू कंट्रोलर पर या संपूर्ण स्क्रीन लेने के लिए प्रस्तुत नियंत्रकों पर कॉल किया जाएगा। तो संभावना है कि आप जिस आईफोन 6+ में इसे कार्यान्वित कर रहे हैं वह मानदंडों को पूरा नहीं करता है। यह किस प्रकार का नियंत्रक है?ऐसा लगता है कि आपको आम तौर पर UINavigationController, UITabBarController और UISplitViewController जैसे मुख्य कंटेनर नियंत्रकों में 'समर्थित इंटरफेसऑरिएंटेशन' लागू करना चाहिए। –

उत्तर

-1

this question को देखते हुए, इस कोड स्निपेट का प्रयास करें:

[:

- (NSUInteger) supportedInterfaceOrientations 
{ 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
    // iPhone 5S and below: 320x480 
    // iPhone 6: 375x667 
    // iPhone 6 Plus: 414x736 
    CGSize screenSize = [UIScreen mainScreen].bounds.size; 
    // The way how UIScreen reports its bounds has changed in iOS 8. 
    // Using MIN() and MAX() makes this code work for all iOS versions. 
    CGFloat smallerDimension = MIN(screenSize.width, screenSize.height); 
    CGFloat largerDimension = MAX(screenSize.width, screenSize.height); 
    if (smallerDimension >= 400 && largerDimension >= 700) 
     return UIInterfaceOrientationMask.Landscape; 
    else 
     return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown); 
    } 
    else 
    { 
    // Don't need to examine screen dimensions on iPad 
    return UIInterfaceOrientationMask.Landscape; 
    } 
} 

-Herzbube

एक अधिकारी ने एप्पल एपीआई अभाव है, इस समाधान है कि मैं के साथ आ गया है कोड]

स्निपेट बस मानता है कि सेमी-अरबी के ऊपर आयाम वाली स्क्रीन बारीकी से चुने गए आकार घूर्णन के लिए उपयुक्त है। अर्ध-मनमाने ढंग से, क्योंकि 400x700 की सीमा में आईफोन 6 प्लस शामिल है, लेकिन आईफोन 6 को शामिल करता है।

हालांकि यह समाधान अपेक्षाकृत सरल है, मुझे इसकी परिष्कार की कमी के कारण यह पसंद है। मुझे वास्तव में उपकरणों के बीच बिल्कुल अंतर करने की आवश्यकता नहीं है, इसलिए Jef's answer में से किसी भी चालाक समाधान मेरे उद्देश्यों के लिए अधिक है।

मैंने जो कुछ किया है वह UIInterfaceOrientationMaskAll से UIInterfaceOrientationMask.Landscape से पहला और तीसरा रिटर्न मान बदल गया था।

+1

मुझे खेद है, लेकिन शायद मैंने पर्याप्त प्रश्न स्पष्ट नहीं किया है। मुझे पता है कि विशिष्ट डिवाइस के लिए परिदृश्य को कैसे कार्यान्वित किया जाए। समस्या यह है कि समर्थित इंटरफ़ेसऑरिएंटेशन आईफोन 6+ डिवाइस पर नहीं बुलाया जाता है। यह 100% समस्या है और इसे केवल आईफोन 6+ उपकरणों पर नहीं बुलाया जाता है। – JLoewy

+0

@JLoewy, आप कोई वास्तविक डिवाइस का परीक्षण नहीं कर रहे हैं? –

3

आप इस कोड को यह मेरे लिए काम करता कोशिश कर सकते हैं

// you have to import foundation 
import Foundation 

class YourViewController : UIViewController { 
    var device = self.platform() 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(true) 

    if device.lowercaseString.rangeOfString("iphone6plus") != nil { 
    supportedInterfaceOrientations() 
    } 

    } 

    // add this method to your view controller 
    func platform() -> String { 
      var sysinfo = utsname() 
      uname(&sysinfo) // ignore return value 
      return NSString(bytes: &sysinfo.machine, length: Int(_SYS_NAMELEN), encoding: 
       NSASCIIStringEncoding)! as String 
     } 

कृपया ध्यान दें कि इस सिम्युलेटर पर नहीं चलेंगे, लेकिन वास्तविक डिवाइस पर पूरी तरह से चलेंगे।

+0

यह कोड कहां जाता है? – JLoewy

+0

हे जेएलवी मैंने जवाब संपादित किया, मुझे उम्मीद है कि यह स्पष्ट करता है – OverD

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