दिलचस्प पोस्ट
jQuery अजाक्स सफलता अनाम समारोह गुंजाइश एक नेस्टेड हैश को एक फ्लैट हैश में परिवर्तित करना NSBlockOperation को कैसे रद्द करें "पूर्णांक आकार = 10" क्या एक निरंतर अभिव्यक्ति उत्पन्न होती है? सी प्रोग्रामिंग भाषा में एक पूर्णांक सरणी में अद्वितीय यादृच्छिक संख्या ViewPager में उंगली से स्वाइप करके पेजिंग को अक्षम कैसे करें लेकिन फिर भी प्रोग्राम को स्वाइप करने में सक्षम हो? पृष्ठभूमि रंग के आधार पर फ़ॉन्ट रंग निर्धारित करें जावा के लिए आराम ग्राहकों? नई कक्षा का अर्थ (…) {{…}} प्रारंभिक मुहावरे बहुरूपता का वर्णन करने की कोशिश करें जितना आसान हो सकता है मैं आसानी से एक क्लास में स्थिर तरीके कैसे नकल कर सकता हूं? एक नियंत्रक में पैरामीटर से एक Grails तिथि बाध्यकारी NSString लीटरल्स के बीच अंतर सी: जब सूचक प्रकार के बीच कास्टिंग नहीं है अपरिभाषित व्यवहार नहीं? चहचहाना बूटस्ट्रैप नेविबार शीर्ष ओवरलैपिंग साइट तय की

IOS 6 बल उपकरण अभिविन्यास के लिए अभिविन्यास

मैंने एक ऐप को 10 दृश्य नियंत्रक कहा। मैं नेविगेशन नियंत्रक को लोड / उन्हें लोड करने के लिए उपयोग करें

सभी केवल एक पोर्ट्रेट मोड में हैं मान लीजिए कि 7 वें वीसी परिदृश्य में है। मुझे लैंडस्केप में प्रस्तुत होने की आवश्यकता है जब यह लोड हो जाता है।

कृपया आईओएस 6 में अभिविन्यास को पोर्ट्रेट से लैंडस्केप तक ले जाने के लिए एक रास्ता सुझाएं (और आईओएस 5 में भी काम करना अच्छा होगा)।

यहां बताया गया है कि आईओएस 6 से पहले मैं यह कैसे कर रहा था:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; UIViewController *c = [[[UIViewController alloc]init] autorelease]; [self presentModalViewController:c animated:NO]; [self dismissModalViewControllerAnimated:NO]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait); } 

एक मॉडल वीसी को प्रस्तुत करना और खारिज करना, एप को अपनी ओरिएंटेशन की समीक्षा करने के लिए मजबूर कर रहा था, इसलिए shouldAutorotateToInterfaceOrientation कि shouldAutorotateToInterfaceOrientation को बुलाया जा रहा था।

मैंने आईओएस 6 में क्या प्रयास किया है:

 - (BOOL)shouldAutorotate{ return YES; } -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ return UIInterfaceOrientationLandscapeLeft; } 

लोड पर, नियंत्रक चित्र में रहना जारी रखता है डिवाइस को घूर्णन करने के बाद, ओरिएंटेशन केवल ठीक ठीक है। लेकिन मुझे नियंत्रक को लोड पर परिदृश्य में स्वचालित रूप से घुमाने के लिए बनाने की आवश्यकता है, इस प्रकार उपयोगकर्ता को डेटा को सही ढंग से देखने के लिए उपकरण को घुमाएगा।

एक और समस्या: डिवाइस को वापस चित्र में घूर्णन करने के बाद, अभिविन्यास चित्र में जाता है, हालांकि मैंने supportedInterfaceOrientations UIInterfaceOrientationMaskLandscape में निर्दिष्ट supportedInterfaceOrientations केवल UIInterfaceOrientationMaskLandscape । ऐसा क्यों होता है?

इसके अलावा, उपरोक्त 3 तरीकों में से कोई भी नहीं मिल रहा है।

कुछ (उपयोगी) डेटा:

  1. मेरी प्लास्ट फाइल में मैंने 3 झुकावों को निर्दिष्ट किया है – सब कुछ उल्टा है
  2. परियोजना Xcode 4.3 IOS 5 में शुरू हुई थी। Xibs सहित सभी वर्गों को Xcode 4.5 IOS 6 से पहले बनाया गया था, अब मैं पिछले संस्करण का उपयोग करता हूं।
  3. Plist फ़ाइल में स्थिति पट्टी दृश्यमान पर सेट है
  4. Xib फ़ाइल में (जो मैं परिदृश्य में होना चाहता हूं) स्टेटस बार "कोई नहीं" है, अभिविन्यास परिदृश्य पर सेट है।

किसी भी मदद की सराहना की है धन्यवाद।

Solutions Collecting From Web of "IOS 6 बल उपकरण अभिविन्यास के लिए अभिविन्यास"

ठीक है, लोग, मैं अपना समाधान पोस्ट करूँगा

जो मेरे पास है:

  1. एक दृश्य आधारित अनुप्रयोग, जिसमें कई दृश्य नियंत्रक हैं (यह नेविगेशन आधारित था, लेकिन उन्मुखीकरण मुद्दों के कारण मुझे इसे देखने के आधार पर करना था)
  2. सभी दृश्य नियंत्रक एक को छोड़कर चित्र हैं – लैंडस्केप लेफ्ट

कार्य:

  1. मेरा एक दृश्य नियंत्रक स्वतः ही परिदृश्य में घुमाएंगे, भले ही उपयोगकर्ता डिवाइस को कैसे रखे। अन्य सभी नियंत्रकों को चित्र होना चाहिए, और परिदृश्य नियंत्रक को छोड़ने के बाद, एप्लिकेशन को घुमाएगी चित्र को घुमाने के लिए, कोई फर्क नहीं पड़ता, दोबारा, उपयोगकर्ता डिवाइस कैसे रखता है।
  2. IOS 5.x पर आईओएस 6.x के रूप में काम करना चाहिए

चले जाओ!

( अपडेट ने @Vwan Vučica द्वारा सुझाए गए मैक्रोज़ को हटा दिया)

अपने सभी पोर्ट्रेट दृश्य नियंत्रकों में इस तरह से ऑटोरोटेशन विधियों को ओवरराइड करें:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ return (toInterfaceOrientation == UIInterfaceOrientationPortrait); } -(BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 

आप 2 दृष्टिकोण देख सकते हैं: IOS 5 के लिए एक और दूसरा आईओएस 6 के लिए।

कुछ परिवर्धन और परिवर्तनों के साथ, अपने LANDSCAPE दृश्य नियंत्रक के लिए भी यही है:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ [image_signature setImage:[self resizeImage:image_signature.image]]; return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft); } -(BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { [image_signature setImage:[self resizeImage:image_signature.image]]; return UIInterfaceOrientationMaskLandscapeLeft; } 

ध्यान : आईओएस 5 में ऑटोरोटेशन को मजबूर करने के लिए आपको इसे जोड़ना चाहिए:

 - (void)viewDidLoad{ [super viewDidLoad]; if ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0) [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationLandscapeLeft animated:NO]; } 

अनैतिक रूप से, जब आप लैंडस्केप नियंत्रक छोड़ देते हैं, तो आप जो भी नियंत्रक लोड करते हैं, आपको आईओएस 5 के लिए फिर से UIDeviceOrientationPortrait को मजबूर करना चाहिए, लेकिन अब आप UIDeviceOrientationPortrait का प्रयोग UIDeviceOrientationPortrait , जैसा कि आप UIDeviceOrientationPortrait नियंत्रक पर जाते हैं:

 - (void)viewDidLoad{ [super viewDidLoad]; if ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0) [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO]; } 

अब आखिरी चीज (और यह थोड़ा अजीब है) – आईओएस के आधार पर आपको एक नियंत्रक से दूसरे पर स्विच करने के तरीके को बदलना होगा:

एक NSObject वर्ग "Schalter" (जर्मन से "स्विच") करें।

Schalter.h में कहते हैं:

 #import <Foundation/Foundation.h> @interface Schalter : NSObject + (void)loadController:(UIViewController*)VControllerToLoad andRelease:(UIViewController*)VControllerToRelease; @end 

Schalter.m में कहते हैं:

 #import "Schalter.h" #import "AppDelegate.h" @implementation Schalter + (void)loadController:(UIViewController*)VControllerToLoad andRelease:(UIViewController*)VControllerToRelease{ //adjust the frame of the new controller CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; CGRect windowFrame = [[UIScreen mainScreen] bounds]; CGRect firstViewFrame = CGRectMake(statusBarFrame.origin.x, statusBarFrame.size.height, windowFrame.size.width, windowFrame.size.height - statusBarFrame.size.height); VControllerToLoad.view.frame = firstViewFrame; //check version and go if (IOS_OLDER_THAN_6) [((AppDelegate*)[UIApplication sharedApplication].delegate).window addSubview:VControllerToLoad.view]; else [((AppDelegate*)[UIApplication sharedApplication].delegate).window setRootViewController:VControllerToLoad]; //kill the previous view controller [VControllerToRelease.view removeFromSuperview]; } @end 

अब, इस तरह से आप शलटर का उपयोग करते हैं (मान लें कि आप वेयरहाउस कंट्रोलर से उत्पाद नियंत्रक तक जाते हैं):

 #import "Warehouse.h" #import "Products.h" @implementation Warehouse Products *instance_to_products; - (void)goToProducts{ instance_to_products = [[Products alloc] init]; [Schalter loadController:instance_to_products andRelease:self]; } bla-bla-bla your methods @end 

बेशक आपको instance_to_products वस्तु जारी करना होगा:

 - (void)dealloc{ [instance_to_products release]; [super dealloc]; } 

खैर, ये यही है नीचे से संकोच न करें, मुझे परवाह नहीं है। यह उन लोगों के लिए है जो समाधान की तलाश में हैं, प्रतिष्ठा के लिए नहीं। चीयर्स! सावा माजरे

यह काम करना चाहिए, यह पूर्व-आईओएस 6 संस्करण के समान है, लेकिन एक UINavigationController साथ:

 UIViewController *portraitViewController = [[UIViewController alloc] init]; UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:portraitViewController]; [self.navigationController presentModalViewController:nc animated:NO]; [self.navigationController dismissModalViewControllerAnimated:NO]; 

मैं इसे बुला रहा हूँ इससे पहले कि मैं अगले UIViewController धक्का दे रहा हूँ यह अगली धक्का दिया UIViewController को पोर्ट्रेट मोड में प्रदर्शित करने के लिए मजबूर करेगी, भले ही वर्तमान UIViewController लैंडस्केप में है (पोर्ट्रेट टू लैंडस्केप के लिए भी काम करना चाहिए)। मेरे लिए आईओएस 4 + 5 + 6 पर काम करता है

मुझे लगता है कि सबसे अच्छा उपाय आधिकारिक सेब दस्तावेजों पर छड़ी करना है। इसलिए मैंने निम्न विधियों का उपयोग किया है और सब कुछ आईओएस 5 और 6 पर बहुत अच्छी तरह से काम कर रहा है। मेरे वीसी में मैं निम्नलिखित विधियों को ओवरराइड करता हूं:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return UIInterfaceOrientationIsPortrait(interfaceOrientation); } 

IOS 6 के लिए तरीके, पहली विधि समर्थित अभिविन्यास मुखौटा (उनके नाम से इंगित करता है) देता है

 -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskPortrait; } 

दूसरा वक़्त आपके वीसी को बताता है कि जब वीसी प्रदर्शित होने वाला है, तो वह पसंदीदा इंटरफ़ेस अभिविन्यास है।

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; } 

बस आप चाहते हैं कि अभिविन्यास के लिए पोर्ट्रेट बदलें;) यह समाधान चिकनी काम कर रहा है, मुझे मैक्रोज़ और अन्य सामान बनाने का विचार पसंद नहीं है, जो कि इस सरल समाधान के आसपास है। उममीद है कि इससे मदद मिलेगी…

मेरे पास एक ही समस्या थी, मेरे आवेदन में 27 बार देखे गए थे, जिसमें से 26 चित्र में थे और केवल सभी झुकाव में एक (एक छवि दर्शक :))। हर वर्ग पर मैक्रो को जोड़ना और नेविगेशन की जगह एक समाधान नहीं था जिसका समाधान मैं था …

इसलिए, मैं अपने ऐप में UINavigationController यांत्रिकी को रखना चाहता था और इसे अन्य कोड के साथ नहीं बदले।

क्या करें:

@ 1 विधि में आवेदन प्रतिनिधियों में किया गया FinishLaunchingWithOptions

 if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // how the view was configured before IOS6 [self.window addSubview: navigationController.view]; [self.window makeKeyAndVisible]; } else { // this is the code that will start the interface to rotate once again [self.window setRootViewController: self.navigationController]; } 

@ 2 क्योंकि नेविगेशन नियंत्रक केवल ऑटोरोटेशन के लिए हां के साथ जवाब देंगे हमें कुछ सीमाएं जोड़ने की आवश्यकता है: UINavicationController को बढ़ाएं -> YourNavigationController और इसे इंटरफ़ेस बिल्डर में लिंक करें

@ 3 नेविगेशन नियंत्रक से "अनोखी नई विधियां" ओवरराइड करें।

चूंकि यह क्लास केवल इस एप्लिकेशन के लिए कस्टम है, इसलिए यह इसके नियंत्रकों की जिम्मेदारी ले सकता है और उनके स्थान पर प्रतिक्रिया दे सकता है।

 -(BOOL)shouldAutorotate { if ([self.viewControllers firstObject] == YourObject) { return YES; } return NO; } - (NSUInteger)supportedInterfaceOrientations { if ([self.viewControllers firstObject] == YourObject) { return UIINterfaceOrientationMaskLandscape; } return UIInterfaceOrientationMaskPortrait; } 

उम्मीद है इससे आपको मदद मिलेगी,

आईओएस 6 रिलीज नोट्स से :

अब, आईओएस कंटेनर (जैसे यूआईएविगेशन नियंत्रक) अपने बच्चों को यह तय करने के लिए नहीं लेते हैं कि उन्हें ऑटोरेट करना चाहिए या नहीं

क्या आपके rootViewController अपने rootViewController के लिए shouldAutoRotate पदानुक्रम के नीचे shouldAutoRotate संदेश को पास करता है?

मैंने लैंडस्केप मोड में एक दृश्य नियंत्रक (चित्र में अन्य सभी) दिखाने के लिए ओपी पूर्व- Ios6 के रूप में एक ही विधि का इस्तेमाल किया (वर्तमान और मोडल वीसी को खारिज कर दिया)। चित्र में दिखने वाले परिदृश्य वीसी के साथ आईओएस 6 में तोड़ दिया।

इसे ठीक करने के लिए, मैंने परिदृश्य में वी.सी. में पसंदीदा इंटरफेसऑरेन्टेशनफ़ॉरप्रॉसेसरेशन विधि को जोड़ा है। ओएस 5 और ओएस 6 के लिए ठीक काम करने लगता है

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } - (BOOL)shouldAutorotate { return NO; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeLeft; } 

हे लोग, बिना किसी सफलता के विभिन्न संभव समाधानों को चुनने के बाद, मैं निम्नलिखित समाधान के साथ बाहर आ गया हूं, यह मदद करता है!

मैंने एक नुस्खा तैयार किया 🙂

समस्या: आपको आईओएस 6 में नेविगेशन नियंत्रक का उपयोग करते हुए दृश्य नियंत्रक के परिवर्तन उन्मुखीकरण की आवश्यकता है।

उपाय:

नेविगेशन का सुझाव दिया

चरण 1. एक प्रारंभिक UIview कन्वर्टर जो मॉडल सेगमेंट्स को लैंडस्केप और पिक्चर UInavigationControllers को चित्र शो के रूप में ट्रिगर करने के लिए ….

UIViewController1 में अधिक गहराई से हमें एपडीलेगेट में ग्लोबल वैरिएबल के अनुसार 2 सेग्स एक्शन की आवश्यकता है ….

 -(void)viewDidAppear:(BOOL)animated{ if([globalDelegate changeOrientation]==0){ [self performSegueWithIdentifier:@"p" sender:self]; } else{ [self performSegueWithIdentifier:@"l" sender:self]; } } 

हमें पोर्ट्रेट पर वापस जाने की ज़रूरत है | परिदृश्य ….

 - (IBAction)dimis:(id)sender { [globalDelegate setChangeOrientation:0]; [self dismissViewControllerAnimated:NO completion:nil]; } 

चरण 2. प्रत्येक नेविगेशन नियंत्रक पर पहले टकरा हुआ UiViewControllers चला जाता है …

 -(NSUInteger)supportedInterfaceOrientations{ return [self.navigationController supportedInterfaceOrientations]; } -(BOOL)shouldAutorotate{ return YES; } 

चरण 3. हम UInavigationController के उप-कक्षा में समर्थित इंटरफ़ेसओरेन्टेशन विधि को अधिलेखित करते हैं ….

आपके कस्टम नवाचार नियंत्रक में हमारे पास …..

 -(NSUInteger)supportedInterfaceOrientations{ if([self.visibleViewController isKindOfClass:[ViewController2 class]]){ return UIInterfaceOrientationMaskPortrait; } else{ return UIInterfaceOrientationMaskLandscape; } } 

चरण 4. स्टोरीबोर्ड पर या कोड द्वारा सेट करें, फुलस्क्रीन लेआउट फ्लैग को पोर्ट्रेट और लैंडस्केप यूिनैविगेशन नियंत्रकों दोनों के लिए हाँ पर सेट करना चाहते हैं।

एक UINavigationController करने की कोशिश करें जो एक श्रेणी का उपयोग करता है या वांछित अभिविन्यास निर्दिष्ट करने के लिए उपवर्ग है, फिर वांछित कुलपति के साथ। यहां अधिक पढ़ें

वैकल्पिक रूप से आप ब्लॉकों का उपयोग करके एक ही कर सकते हैं:

 UIViewController *viewController = [[UIViewController alloc] init]; viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; [self presentViewController:viewController animated:NO completion:^{ [self dismissViewControllerAnimated:NO completion:nil]; }]; 

इसके अलावा, नए दृश्य को दबाए जाने से पहले इसे कॉल करें।

आप Info.plist फ़ाइल पर जाएं और परिवर्तन करें यहां छवि विवरण दर्ज करें

मुझे भी यही समस्या थी। यदि आप किसी विशेष दृश्य नियंत्रक को परिदृश्य में प्रकट करने के लिए मजबूर करना चाहते हैं, तो उसे नेविगेशन स्टैक में धक्का देने से पहले इसे सही करें।

 UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation]; if (currentOrientation == UIInterfaceOrientationPortrait || currentOrientation == UIInterfaceOrientationPortraitUpsideDown) [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft]; UIViewController *vc = [[UIViewController alloc] init]; [self.navigationController pushViewController:vc animated:YES]; [vc release]; 

मैंने इसे UINavigationController उप-क्लासिंग करके और नेविगेशन नियंत्रक के समर्थित इंटरफेस को ओवरराइड करके इसका हल किया है:

 - (NSUInteger)supportedInterfaceOrientations { return [[self topViewController] supportedInterfaceOrientations]; } 

सभी नियंत्रकों ने अपने वांछित ओरिएंटेशन के साथ समर्थित इंटरफेसऑरेंटेशन को लागू किया।

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

 #import <objc/message.h> 

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if(UIDeviceOrientationIsLandscape(self.interfaceOrientation)) { UIInterfaceOrientation destinationOrientation; if ([[segue destinationViewController] isKindOfClass:[UINavigationController class]]) { UINavigationController *navController = (UINavigationController *)[segue destinationViewController]; destinationOrientation = [navController.topViewController preferredInterfaceOrientationForPresentation]; } else { destinationOrientation = [[segue destinationViewController] preferredInterfaceOrientationForPresentation]; } if ( destinationOrientation == UIInterfaceOrientationPortrait ) { if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) { objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait ); } } } }