लैंडस्केप मोड, 2008 प्रणालियों में iPhone ऐप्स

वोट
88

नोट: इस सवाल का 2008 से है और अब केवल ऐतिहासिक ब्याज की है।


कि शुरू से ही लैंडस्केप मोड में चलाता है, उपकरण की स्थिति की परवाह किए बिना एक iPhone आवेदन बनाने के लिए सबसे अच्छा तरीका क्या है?

दोनों प्रोग्राम के रूप में और इंटरफ़ेस बिल्डर का उपयोग कर।

02/08/2008 को 11:47
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


8 जवाब

वोट
46

ऐतिहासिक जवाब केवल। शानदार पुराना हो चुका:

कृपया ध्यान दें कि इस जवाब अब बेहद पुराना हो चुका है।

इस पोस्ट में है केवल एक ऐतिहासिक जिज्ञासा


उत्तेजित समाचार! नीचे एंड्रयू द्वारा की खोज के रूप में, इस समस्या को 4.0+ में एप्पल द्वारा निर्धारित किया गया है।

ऐसा लगता है यह अब हर दृश्य पर दृश्य के आकार का, और परिदृश्य के "केवल पहली बार काम कर रहे" विशिष्ट गंभीर समस्या के लिए मजबूर करने के लिए आवश्यक है हल किया गया है।

अप्रैल 2011 के रूप में, यह परीक्षण या यहां तक ​​कि 4.0 से नीचे कुछ भी होती हैं, इसलिए प्रश्न विशुद्ध रूप से एक ऐतिहासिक जिज्ञासा है करने के लिए संभव नहीं है। यह कितना मुसीबत यह बहुत देर के लिए डेवलपर्स की वजह से अविश्वसनीय है!


यहाँ मूल चर्चा और समाधान है। अब यह पूरी तरह से अप्रासंगिक है, के रूप में इन पद्धतियों भी प्रचलित नहीं हैं।


यह पूरी तरह से इस काम करने के लिए बेहद मुश्किल है - कम से कम तीन समस्याओं / खेल में कीड़े हैं।

कोशिश यह .. इंटरफ़ेस बिल्डर परिदृश्य डिजाइन

विशेष रूप से ध्यान दें कि जहां लिखा है "और आप ठीक ढंग से हर जगह shouldAutorotateToInterfaceOrientation उपयोग करने की आवश्यकता" यह हर जगह का मतलब है, अपने सभी फुलस्क्रीन देखा गया।

आशा है कि यह इस दुःस्वप्न में मदद करता है!

हाथ यहाँ पर अतिरिक्त अच्छी तरह से ज्ञात समस्या का एक महत्वपूर्ण अनुस्मारक: यदि आप के बीच स्वैप करने के लिए कोशिश कर रहे हैं से अधिक एक (सभी परिदृश्य) देखने के लिए, यह सिर्फ काम नहीं करता है । यह जरूरी है यह याद करने के लिए या आप समस्या पर दिन बर्बाद होगा। यह सचमुच संभव नहीं है। यह सबसे बड़ी खुली, जाना जाता है, आईओएस प्लेटफॉर्म पर बग है। वहाँ सचमुच हार्डवेयर आप लोड, परिदृश्य हो दूसरे दृश्य बनाने बनाने के लिए कोई रास्ता नहीं है। कष्टप्रद लेकिन सरल तरीके को, और तुम क्या करना चाहिए क्या, एक छोटी सी मास्टर UIViewController कि कुछ भी नहीं लेकिन वहाँ बैठते हैं और आप अपने विचारों के बीच स्वैप करते हैं करता है।

दूसरे शब्दों में, एक प्रमुख पता है कि बग की वजह से आईओएस में:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

आप केवल एक बार ऐसा कर सकते हैं । बाद में, यदि आप happyThing.view दूर करने के लिए, और बदले में वहाँ newThing.view डाल कोशिश, यह काम नहीं करता - और यह कि ऐसा इसलिए है। मशीन परिदृश्य के लिए दृश्य को घुमाने कभी नहीं होगा। कोई चाल ठीक भी एप्पल यह काम नहीं कर सकते हैं, नहीं है। वैकल्पिक हल आप को अपनाने चाहिए एक समग्र UIViewController कि बस वहाँ बैठता हो रही है और सिर्फ अपने विभिन्न दृश्य (happyThing, newThing, आदि) आयोजित करता है। आशा करता हूँ की ये काम करेगा!

27/03/2010 को 22:13
का स्रोत उपयोगकर्ता

वोट
40

एप्पल देव साइट से:

लैंडस्केप मोड में अपने आवेदन शुरू करने के लिए इतना है कि स्थिति पट्टी तुरंत उचित स्थिति में है, के रूप में लिस्टिंग 2 में दिखाया गया, उचित मूल्य (UIInterfaceOrientationLandscapeRight या UIInterfaceOrientationLandscapeLeft) के साथ UIInterfaceOrientation कुंजी जोड़ने के लिए अपने Info.plist फ़ाइल को संपादित।

लिस्टिंग 2: लैंडस्केप मोड में अपने आवेदन शुरू

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
31/08/2008 को 15:38
का स्रोत उपयोगकर्ता

वोट
27

सारांश और सभी पोस्ट से एकीकरण, इसे अपने आप को परीक्षण के बाद; 4.x, नीचे 5.x के लिए अद्यतन की जाँच करें।

3.2 के रूप में आप कोड से चल रहे एप्लिकेशन के उन्मुखीकरण बदल नहीं सकते।

लेकिन तुम, एक निश्चित उन्मुखीकरण के साथ एक आवेदन शुरू कर सकते हैं, हालांकि ऐसा करने से यह सरल नहीं है।

यह नुस्खा के साथ प्रयास करें:

  1. करने के लिए अपने उन्मुखीकरण सेट UISupportedInterfaceOrientationsमें Info.plistफ़ाइल
  2. अपने विंडो में एक 480x320 "आधार दृश्य नियंत्रक" परिभाषित करते हैं। हर दूसरे दृश्य अपने दृश्य के लिए एक subview के रूप में जोड़ दिया जाएगा।
  3. की स्थापना की सभी दृश्य नियंत्रकों में shouldAutorotateToInterfaceOrientation:विधि (एक ही मूल्य आप plist में परिभाषित वापस जाने के लिए निश्चित रूप से,)
  4. सभी दृश्य नियंत्रकों के साथ एक पृष्ठभूमि दृश्य सेट

    self.view.frame = CGRectMake(0, 0, 480, 320)

    में viewDidLoadविधि।

अद्यतन (आईओएस 4.x, 5.x) : एप्पल iOS एप्लिकेशन प्रोग्रामिंग गाइड "उन्नत अनुप्रयोग ट्रिक्स" अध्याय में एक "लैंडस्केप मोड में शुभारंभ" पैरा है।

संदर्भ:

07/05/2010 को 12:02
का स्रोत उपयोगकर्ता

वोट
7

सबसे पहले मैं Info.plist में सेट

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

फिर मैं applicationDidFinishLaunching में इस कोड डाल:

CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];

CGRect contentRect = CGRectMake(0, 0, 480, 320); 
window.bounds = contentRect; 
[window setCenter:CGPointMake(160.0f, 240.0f)]; 

इस तरह से मैं लैंडस्केप मोड में इंटरफ़ेस बिल्डर में दृश्य पर काम कर सकते हैं।

20/11/2009 को 21:58
का स्रोत उपयोगकर्ता

वोट
6

श्राइन बोर्ड के और michaelpryor के जवाब सही प्रतीत होता है, लेकिन अगर यह आप के लिए काम नहीं कर रहा है, इस विकल्प का प्रयास करें:

- (void)applicationDidFinishLaunchingUIApplication *)application {
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}

या यह एक:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

या यह एक:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

तुम भी फोन करने के लिए हो सकता है window makeKeyAndVisible;पहले।

कुछ लिंक: लैंडस्केप मोड में विकास , iPhone SDK: कैसे केवल लैंडस्केप मोड के लिए मजबूर करने?

@Robert: देखें iPhone SDK एनडीए, और स्टैक ओवरफ़्लो

31/08/2008 को 16:01
का स्रोत उपयोगकर्ता

वोट
5

मैं हैरान हूँ कि कोई भी अभी तक इस जवाब के साथ आ गया:

मेरे सभी परीक्षणों में जब एक एक मॉडल दृश्य नियंत्रक जनक दृश्य नियंत्रक के पसंदीदा अभिविन्यास में सेट खारिज shouldAutorotateToInterfaceOrientationयहां तक कि जब एक UINavigationController का हिस्सा सम्मानित किया है। तो इस का हल आसान है:

एक पृष्ठभूमि के लिए एक UIImageView के साथ एक डमी UIViewController बनाएँ। default.png छवि अपने अनुप्रयोग स्टार्टअप पर उपयोग करता है करने के लिए छवि सेट करें।

जब viewWillAppearअपने रूट दृश्य नियंत्रक में बुलाया जाता है, बस एनीमेशन के बिना डमी दृश्य नियंत्रक प्रस्तुत करते हैं।

जब viewDidAppearअपने डमी दृश्य नियंत्रक में बुलाया जाता है, एक अच्छा पार के साथ दृश्य नियंत्रक खारिज एनीमेशन भंग।

इतना ही नहीं काम करता है, लेकिन यह अच्छा लग रहा है! Btw, सिर्फ स्पष्टीकरण के लिए मैं जड़ दृश्य नियंत्रक के कर viewWillAppearइस तरह:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
27/11/2010 को 08:38
का स्रोत उपयोगकर्ता

वोट
4

नवीनतम iPhone OS प्रोग्रामिंग गाइड नमूना कोड के साथ इस पर एक पूर्ण खंड, है। मुझे यकीन है कि यह हाल ही में एक है कर रहा हूँ, तो शायद आप नहीं देख पाए। यह सभी शर्तों आप का पालन करना होगा बताते हैं; मूल रूप से ...

  • Info.plist गुण सेट (इस स्थिति पट्टी की स्थिति में परिवर्तन, लेकिन दृश्य नहीं)
  • इसके केंद्र के चारों ओर मैन्युअल रूप से अपने दृश्य को घुमाने, या तो अपने UIViewController viewDidLoad पर: विधि या अपने applicationDidFinishLaunching: विधि या ऑटो रोटेशन ( "autoresizing व्यवहार", पेज 124) लागू

"लैंडस्केप मोड में शुभारंभ" के लिए देखो, पेज 102।

04/09/2008 को 22:57
का स्रोत उपयोगकर्ता

वोट
3

: इस उत्तर देखें केवल iPhone या iPad के लिए भू-दृश्य मोड

  1. plist को उन्मुखीकरण जोड़ने
  2. shouldAutorotateToInterfaceOrientation सभी फाइलों में = हाँ

हालांकि अगर आप मिश्रित मोड का उपयोग कर रहे हैं, तो आप के साथ बंद बेहतर हो सकता है

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
06/03/2011 को 08:56
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more