दिलचस्प पोस्ट
एमवीसी में कुछ दिए गए पृष्ठ पर अनाम उपयोगकर्ता की अनुमति कैसे दी जाती है? पायथन एम्बेडिंग के साथ सी ++: दुर्घटना अगर पायथन स्थापित नहीं है Jquery blur () ईवेंट को ट्रिगर करने वाले क्लिक ऑब्जेक्ट प्राप्त करें Django: एक ऑब्जेक्ट फॉर्म डीबी, या 'कोई नहीं' प्राप्त करें अगर कुछ मेल नहीं खाता जीएसएम मॉडेम के लिए कैसे "कमांड में" कॉल किया जाता है? Standart नहीं send_sms और आदि जब कोई थ्रेड किसी कार्य को पूरा करता है तो एकाधिक थ्रेड्स समाप्त करें अब हमें एक व्यक्तिगत पोस्ट कैसे प्राप्त करनी चाहिए कि / v2.4 में पदावनत है? विशिष्ट वर्ण के लिए ऑरेकल एसक्यूएल में उपस्ट्रिंग का चयन कैसे करें? वॉली एंड्रॉइड नेटवर्किंग लाइब्रेरी सी ++ 11 मानक में उल्लिखित "तत्काल संदर्भ" क्या वास्तव में एसएफआईएनएई लागू होता है? जावास्क्रिप्ट में ऑब्जेक्ट हटाना ओरेकल एसक्यूएल में 'YYYY' और 'RRRR' के बीच अंतर क्या है स्टार्टअप पर टॉमकेट कॉन्फ़िगरेशन में मैं सिस्टम गुणों को कैसे निर्दिष्ट कर सकता हूं? मैं अजैक्स को Django अनुप्रयोगों के साथ कैसे एकीकृत कर सकता हूं? PostgreSQL की तरह क्वेरी प्रदर्शन विविधता

लैंडस्केप अभिविन्यास में UIImagePickerController का उपयोग करना

मैं एक ऐसा ऐप तैयार कर रहा हूं जो लैंडस्केप मोड में है और मैं UIImagePickerController का उपयोग कर रहा हूं ताकि इसमें आईफोन कैमरे का उपयोग कर तस्वीरें ले सकें और मैं इसे लैंडस्केप मोड में भी बनाना चाहता हूं।

लेकिन जैसा कि एप्पल UIImagePickerController पता चलता है कि UIImagePickerController लैंडस्केप अभिविन्यास का समर्थन नहीं करता है, इसलिए वांछित कार्यक्षमता प्राप्त करने के लिए मुझे क्या करना चाहिए?

Solutions Collecting From Web of "लैंडस्केप अभिविन्यास में UIImagePickerController का उपयोग करना"

यदि आप लैंडस्केप मोड में UIImagePickerController का उपयोग करना चाहते हैं, तो user1673099 का उत्तर उपयोग करें, लेकिन इसके बजाय:

 - (BOOL)shouldAutorotate { return NO; } 

उपयोग:

 - (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; } 

और फिर पिकर परिदृश्य मोड में खुल जाएगा:

यहां छवि विवरण दर्ज करें

लेकिन सुनिश्चित करें कि आप परिनियोजन जानकारी में पोर्ट्रेट की जांच करें:

यहां छवि विवरण दर्ज करें

इस तरह की कोशिश करो ….

ऐप्पल डॉक्युमेंट के अनुसार, छवि पिक्चर नियंत्रक लैंडस्केप मोड में कभी भी घुमाए नहीं जाते। आपको केवल पोर्ट्रेट मोड में ही उपयोग करना होगा

केवल छवि पिक्चर नियंत्रक के लिए लैंडस्केप मोड को अक्षम करने के लिए कोड का पालन करें:

अपने ViewController.m में:

छवि पिकर नियंत्रक के उप-क्लास (नॉनरोटेटिंग यूमेज पिक्चर कंट्रोलर) को बनाएं

 @interface NonRotatingUIImagePickerController : UIImagePickerController @end @implementation NonRotatingUIImagePickerController // Disable Landscape mode. - (BOOL)shouldAutorotate { return NO; } @end 

का पालन करें के रूप में उपयोग करें

 UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.delegate = self; etc.... Just as Default ImagePicker Controller 

यह मेरे लिए काम कर रहा है और मुझे बताएं कि क्या आपको कोई समस्या है।

किसी भी हैक्स के बिना लैंडस्केप मोड में UIImagePickerController का उपयोग करने का सही तरीका यह एक UIPopoverController

 - (void)showPicker:(id)sender { UIButton *button = (UIButton *)sender; UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; _popover = [[UIPopoverController alloc] initWithContentViewController:picker]; [_popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } 

कोड विधि से ऊपर संशोधित करें

 - (NSUInteger)supportedInterfaceOrientations { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; if(orientation == UIDeviceOrientationLandscapeRight || orientation == UIDeviceOrientationLandscapeLeft) return UIInterfaceOrientationMaskLandscape; else return UIInterfaceOrientationMaskPortrait; } 

… और मैं इसे लैंडस्केप मोड में भी बनाना चाहता हूं।

कोड की एक पंक्ति में बड़ा अंतर हो सकता है! विधि या समारोह में जहां आपका आईबैक्शन भूमि:

स्विफ्ट में,

 let imagePickerController = UIImagePickerController() imagePickerController.delegate = self // .overCurrentContext allows for landscape and portrait mode imagePickerController.modalPresentationStyle = .overCurrentContext 

उद्देश्य सी,

 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; [imagePickerController setDelegate:self]; [imagePickerController setModalPresentationStyle: UIModalPresentationOverCurrentContext]; 

नोट: यह छवि पिक्चर कंट्रोलर को इसे ठीक से देखने के लिए पेश करने की अनुमति देगा, लेकिन रोटेशन के जारी होने के मुद्दे को ठीक नहीं किया जा सकता है।

स्वीकृत जवाब मेरे लिए काम नहीं करता है मुझे यह काम करने के लिए UIImagePickerController में मॉडल प्रस्तुतीकरण शैली जोड़ना था।

 UIImagePickerController *pickerController = [[UIImagePickerController alloc] init]; pickerController.modalPresentationStyle = UIModalPresentationCurrentContext; pickerController.delegate = self; pickerController.allowsEditing = YES; pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:pickerController animated:YES completion:nil]; 

और निश्चित रूप से इसे अपने प्रतिनिधि में रखना याद रखें:

 - (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } 

लेकिन ऐप्पल के प्रलेखन के अनुसार यह इस पिकर को लैंडस्केप मोड में पेश करने के लिए समर्थित नहीं है, इसलिए इसके बारे में सावधान रहें।

यहां एक संस्करण है जो सभी इंटरफ़ेस पूर्वाग्रहों में रोटेशन का समर्थन करता है:

 /// Not fully supported by Apple, but works as of iOS 11. class RotatableUIImagePickerController: UIImagePickerController { override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .all } } 

इस तरह यदि उपयोगकर्ता अपने डिवाइस को घुमाए, तो यह वर्तमान ओरिएंटेशन को समर्थन देने के लिए पिकर नियंत्रक को अपडेट करेगा। जैसे ही आप आमतौर पर एक UIImagePickerController होगा बस आरंभ करें

यदि आप केवल ऑरिएंटेशन के सबसेट का समर्थन करना चाहते हैं, तो आप एक अलग मान वापस कर सकते हैं।

यह आईओएस 10/11 में स्विफ्ट 4.0 के साथ बहुत अच्छा काम करता है

 import UIKit extension UIImagePickerController { override open var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .all } } 

बस अपनी प्रोजेक्ट में कहीं और एक्सटेंशन को छोड़ दें, इसके लिए काम करने के लिए कुछ भी उप-वर्ग की आवश्यकता नहीं है।

यदि आपको डिवाइस प्रकार निर्दिष्ट करने की आवश्यकता है, तो आप इस तरह एक चेक जोड़ सकते हैं:

 import UIKit extension UIImagePickerController { override open var supportedInterfaceOrientations: UIInterfaceOrientationMask { return UIDevice.current.userInterfaceIdiom == .phone ? .portrait : .all } } 

यह एक आईपैड को आज़ादी से घुमाने की अनुमति देगा, लेकिन फोन पर पोर्ट्रेट मोड को लागू करता है। बस यह सुनिश्चित करें कि आपका ऐप इसकी जानकारी के अनुसार इन्हें समर्थन करने के लिए कॉन्फ़िगर किया गया है। प्लिस्ट, अन्यथा आपको पिकर लॉन्च करने पर क्रैश हो सकता है