लैंडस्केप मोड, 2008 सिस्टम में आईफोन ऐप

नोट: यह प्रश्न 2008 से है और अब केवल ऐतिहासिक रुचि है।


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

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

0
जोड़ा संपादित
विचारों: 1
क्या आपने बहुभुज द्वारा उपयोग की जाने वाली शब्दावली को बदलने का प्रयास किया था? बहुभुज की रूपरेखा के लिए, एक कार्टोग्राफिक लाइन प्रतीक चुनें, - रूपरेखा रेखा प्रतीक ऑफसेट को ऋणात्मक संख्या (रेखा गुण टैब पर) पर सेट करें।
जोड़ा लेखक saint_groceon, स्रोत
भविष्य के पाठकों के लिए, कृपया ध्यान दें कि इस प्रसिद्ध समस्या अब 2011 तक ऐप्पल द्वारा हल की गई है । नीचे दिए गए उत्तर में परीक्षण प्रोजेक्ट पर ध्यान दें।
जोड़ा लेखक Fattie, स्रोत
हाँ। इसके साथ समस्या यह है कि आप सभी प्रकार के अजीब ओवर/अंडरशूट और स्पाइक्स होने से पहले सीमा रेखा के साथ कुछ पॉट्स से अधिक नहीं जा सकते हैं। उदाहरण तस्वीर , ऑफसेट मोटी लाइनों पर स्पाइक्स थ्रेड।
जोड़ा लेखक Greg, स्रोत
@matt दृश्य उद्देश्यों के लिए, आपके प्रतीक होने के बाद, डेटा को कार्टोग्राफिक प्रतिनिधित्व
जोड़ा लेखक DavidWhitney, स्रोत

8 उत्तर

विश्लेषण टूलबॉक्स से बफर टूल का उपयोग करें और बफर दूरी के लिए एक नकारात्मक मान दर्ज करें। साइड प्रकार के लिए OUTSIDE_ONLY चुनें और फिर प्रासंगिक विशेषताओं पर भंग करें।

उन्नत लाइसेंस की आवश्यकता है।

एक बार जिम्मेदार बफर मौजूद हैं, हम परिभाषा क्वेरीज़ केवल कुछ एफएन प्रदर्शित करने के लिए और/या प्रत्येक को एक अलग प्रतीक वर्ग से अलग प्रतीक के साथ दिखाएं।

buffer tool with relevant fields highlighted Using separate symbol for each feature class

7
जोड़ा

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

To start your application in landscape mode so that the status bar is in the appropriate position immediately, edit your Info.plist file to add the UIInterfaceOrientation key with the appropriate value (UIInterfaceOrientationLandscapeRight or UIInterfaceOrientationLandscapeLeft), as shown in Listing 2.

Listing 2: Starting your application in landscape mode

UIInterfaceOrientation
UIInterfaceOrientationLandscapeRight
0
जोड़ा
प्रश्न पूछता है कि डिवाइस को लैंडस्केप मोड में कैसे शुरू करें। जवाब उस जानकारी देता है। इसके बाद अभिविन्यास को संभालना प्रश्न में उल्लिखित नहीं है। +1 माइकल प्रायर
जोड़ा लेखक ingh.am, स्रोत
दिलचस्प बात यह है कि "उत्तर" वास्तव में लैंडस्केप मोड में डिवाइस शुरू नहीं करेगा - !! यह शायद सभी एप्पल पर्यावरण में सबसे प्रसिद्ध बग / कठिनाई है। यह बहुत काम कर रहे आईपैड डेवलपर के लिए बुनियादी है!
जोड़ा लेखक Fattie, स्रोत
@mbehan UIInterfaceOrientationPortraitUpsideDown भी है, इसलिए कोई फिक्स नहीं है। इसके अतिरिक्त, .plist में UIInterfaceOrientation केवल 3.2+ पर समर्थित है, 3.1.3-और पुराने डिवाइस पर नहीं (और याद रखें कि आईफोन 2 जी उस संस्करण पर फंस गया है)।
जोड़ा लेखक Ivan Vučica, स्रोत
यह प्लस आपके चाहिए मेंऑटोरोटेट टूइंटरफेसऑरिएंटेशन विधियों की वापसी (इंटरफ़ेसऑरिएंटेशन! = UIInterfaceOrientationPortrait); और आपने कल लिया।
जोड़ा लेखक mbehan, स्रोत

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

कृपया ध्यान दें कि यह उत्तर अब बहुत पुराना है।

यह पोस्ट केवल एक ऐतिहासिक जिज्ञासा है।


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

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

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


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


यह काम पूरी तरह से करने के लिए बेहद अलग है - खेल में कम से कम तीन समस्याएं / बग हैं।

try this .. interface builder landscape design

विशेष रूप से ध्यान दें कि जहां यह कहता है "और आपको हर जगह ठीक से ऑटोरोटेट टॉइंटरफेसऑरिएंटेशन का उपयोग करने की आवश्यकता है" इसका अर्थ यह है कि हर जगह, आपके सभी पूर्ण स्क्रीन दृश्य।

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

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

दूसरे शब्दों में, आईओएस में एक प्रमुख पता बग के कारण:

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

You can do that only once. Later, if you try to remove happyThing.view, and instead put in there newThing.view, IT DOES NOT WORK - AND THAT'S THAT. The machine will never rotate the view to landscape. There is no trick fix, even Apple cannot make it work. The workaround you must adopt is having an overall UIViewController that simply sits there and just holds your various views (happyThing, newThing, etc). Hope it helps!

0
जोड़ा
मेरा मानना ​​है कि यह 4.x में तय किया गया है। हमने एक गेम भेज दिया जिसमें विभिन्न स्क्रीन, कुछ परिदृश्य और कुछ चित्रों का एक गुच्छा था, और यह 3.x में काम नहीं किया। इसे संभालने के लिए अतिरिक्त डमी व्यू में शामिल नहीं होना चाहते हैं, इसके बजाय हमें 4.x की आवश्यकता है - जो इस सवाल के एक साल बाद पूछा गया था, शायद यह ठीक है।
जोड़ा लेखक AndrewS, स्रोत
हमने "हमेशा परिदृश्य" नहीं बल्कि विभिन्न परिदृश्य या चित्र नहीं किया। प्रत्येक वीसी सीधे खिड़की से जोड़ा और हटा दिया जाता है। ऐप परिदृश्य लॉन्च करता है, कई स्क्रीन संक्रमणों के माध्यम से उस तरह रहता है। हम एक डमी व्यू का उपयोग नहीं करते हैं, लेकिन हम प्रत्येक स्क्रीन में ऑटोरोटेट को ओवरराइड करते हैं। 4.x पर, टच से पैड तक फोन तक कोई समस्या नहीं है।
जोड़ा लेखक AndrewS, स्रोत

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

UIInterfaceOrientation
UIInterfaceOrientationLandscapeRight

तो मैंने इस कोड को एप्लिकेशन में रखा हैडिफिनिश लॉन्चिंग:

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)]; 

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

0
जोड़ा

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

3.2 के रूप में आप कोड से चल रहे एप्लिकेशन के अभिविन्यास को नहीं बदल सकते हैं।

लेकिन आप एक निश्चित अभिविन्यास के साथ एक आवेदन शुरू कर सकते हैं, हालांकि ऐसा करने से यह सीधा नहीं है।

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

  1. set your orientation to UISupportedInterfaceOrientations in the Info.plist file
  2. in your window define a 480x320 "base view controller". Every other view will be added as a subview to its view.
  3. in all view controllers set up the shouldAutorotateToInterfaceOrientation: method (to return the same value you defined in the plist, of course)
  4. in all view controllers set a background view with

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

    in the viewDidLoad method.

Update (iOS 4.x, 5.x): the Apple iOS App Programming Guide has a "Launching in Landscape Mode" paragraph in the "Advanced App Tricks" chapter.

संदर्भ:

0
जोड़ा
मुझे प्यार है कि एसओ सवाल का लिंक इस सवाल पर वापस कैसे लिंक करता है।
जोड़ा लेखक Richard J. Ross III, स्रोत
मैं पुष्टि कर सकता हूं कि यह एकमात्र, वास्तव में काम करने वाला समाधान है (एक छोटे से अतिरिक्त के साथ)। मुझे यह खोजने और मूल्यांकन करने में घंटों लग गए। अन्य सभी उत्तरों समस्या के केवल आंशिक समाधान हैं।
जोड़ा लेखक Johannes Rudolph, स्रोत
Ty रिचर्ड, लूपिंग लिंक हटा दिया
जोड़ा लेखक IlDan, स्रोत

sasb's और michaelpryor का उत्तर सही प्रतीत होता है, लेकिन यदि यह आपके लिए काम नहीं कर रहा है, तो इस विकल्प को आजमाएं:

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

या यह एक:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

या यह एक:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

आपको विंडो बनाने के लिए भी कॉल करना होगा और दृश्यमान; पहले।

A few links: Developing in landscape mode, iPhone SDK: How to force Landscape mode only?

@Robert: कृपया आईफोन एसडीके, एनडीए, और स्टैक ओवरफ़्लो

0
जोड़ा

मुझे आश्चर्य है कि कोई भी इस जवाब के साथ अभी तक नहीं आया है:

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

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

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

जब viewDidAppear को आपके डमी व्यू कंट्रोलर में कॉल किया जाता है, तो एक अच्छा क्रॉस विघटित एनीमेशन के साथ व्यू कंट्रोलर को खारिज कर दें।

यह न केवल काम करता है, लेकिन यह अच्छा लगता है! बीटीडब्लू, सिर्फ स्पष्टीकरण के लिए मैं रूट व्यू कंट्रोलर का viewWillAppear करता हूं:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
0
जोड़ा

See this answer: Landscape Mode ONLY for iPhone or iPad

  1. plist
  2. पर अभिविन्यास जोड़ें
  3. सभी फाइलों में AAutorotateToInterfaceOrientation = हाँ है

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

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
0
जोड़ा