سؤال

ملاحظة:هذا السؤال هو من 2008 و الآن هو فقط التاريخي الفائدة.


ما هي أفضل طريقة لخلق اي فون التطبيق الذي يعمل في وضع أفقي من البداية بغض النظر عن الموقف من الجهاز ؟

سواء برمجيا باستخدام واجهة البناء.

هل كانت مفيدة؟

المحلول

التاريخية الإجابة فقط.مذهل من تاريخ:

يرجى ملاحظة أن هذا الجواب هو الآن كبير من التاريخ.

هذا المنصب هو فقط فضول تاريخي.


الأخبار المثيرة!كما اكتشفت من قبل أندرو أدناه ، تم إصلاح هذه المشكلة من قبل شركة آبل في 4.0+.

يبدو أنه لم يعد من الضروري لإجبار حجم عرض على كل عرض ، و المحددة مشكلة خطيرة من المشهد "تعمل فقط في المرة الأولى" قد تم حلها.

اعتبارا من نيسان / أبريل 2011 ، فإنه ليس من الممكن اختبار أو حتى بناء أي شيء أقل من 4.0 ، وبالتالي فإن السؤال هو محض تاريخية الفضول.إنه أمر لا يصدق كيف الكثير من المتاعب تسبب المطورين لفترة طويلة!


هنا هو الأصل مناقشة الحل.هذا هو غير ذي صلة تماما الآن ، كما أن هذه النظم ليست قابلة للتشغيل.


فإنه من الصعب للغاية أن يجعل هذا العمل تماما-هناك على الأقل ثلاث مشاكل/البق في اللعب.

جرب هذا .. بناء واجهة تصميم المناظر الطبيعية

ملاحظة على وجه الخصوص حيث يقول "و كنت بحاجة إلى استخدام shouldAutorotateToInterfaceOrientation بشكل صحيح في كل مكان" يعني في كل مكان ، كل ما تبذلونه من ملء الشاشة وجهات النظر.

آمل أن يساعد في هذا الكابوس!

تذكرة هامة إضافية المعروفة المشكلة المطروحة هنا:إذا كنت تحاول مبادلة بين أكثر من واحد عرض (جميع أفقي) ، فإنه ببساطة لا يعمل.فمن الضروري أن نتذكر هذا أو سوف تضيع أيام على المشكلة.هو حرفيا غير ممكن.هو أكبر مفتوحة ، معروف ، علة على منصة دائرة الرقابة الداخلية.هناك حرفيا أي طريقة لجعل الأجهزة تجعل الرأي الثاني تحميل, يكون المشهد.مزعج لكن الحل بسيط و ما يجب عليك فعله, هو تافهة سيد UIViewController أن لا يفعل شيئا سوى الجلوس هناك و تتيح لك مبادلة بين وجهات النظر الخاصة بك.

وبعبارة أخرى, في دائرة الرقابة الداخلية بسبب الرئيسية أعرف علة:

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

يمكنك أن تفعل ذلك مرة واحدة فقط.في وقت لاحق, إذا حاولت إزالة happyThing.وعرض بدلا من ذلك وضعت في هناك newThing.نرى أنه لا عمل ذلك.الجهاز لن تدوير إطلالة على المناظر الطبيعية.لا توجد خدعة الإصلاح ، حتى أبل لا يمكن أن تجعل من العمل.الحل يجب أن تعتمد هو وجود الكلي UIViewController ببساطة يجلس هناك فقط يحمل وجهات نظركم المختلفة (happyThing, newThing ، إلخ).نأمل أن يساعد!

نصائح أخرى

من أبل ديف الموقع:

إلى بدء تشغيل التطبيق الخاص بك في المشهد وضع بحيث شريط الحالة في الموقف المناسب على الفور وتحرير المعلومات الخاصة بك.plist لإضافة UIInterfaceOrientation الرئيسية مع القيمة المناسبة (UIInterfaceOrientationLandscapeRight أو UIInterfaceOrientationLandscapeLeft), كما هو موضح في قائمة 2.

قائمة 2:بدءا من التطبيق الخاص بك في وضع أفقي

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

ملخص و التكامل من جميع الوظائف ، بعد اختبار نفسي ؛ التحقق من التحديث 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):أبل دائرة الرقابة الداخلية التطبيق دليل البرمجة لديها "الشروع في وضع أفقي" الفقرة في "المتقدمة التطبيق الحيل" الفصل.

المراجع:

أولا أنا وضعت في المعلومات.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)]; 

بهذه الطريقة يمكنني العمل على عرض في واجهة البناء في وضع أفقي.

sasb و michaelpryor الجواب يبدو أن يكون صحيحا ، ولكن إذا كان لا يعمل بالنسبة لك ، جرب هذا البديل:

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

أو هذا واحد:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

أو هذا واحد:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

قد يكون لديك أيضا الاتصال window makeKeyAndVisible; أولا.

بعض الروابط: النامية في وضع أفقي, iPhone SDK:كيفية فرض وضع أفقي فقط ؟

@روبرت:يرجى الرجوع إلى IPhone SDK ، التجمع الوطني الديمقراطي ، و تجاوز سعة مكدس.

أنا مندهش لم يأت أحد حتى مع هذا الجواب حتى الآن:

في كل الاختبارات عندما رفض مشروط تحكم عرض وجهة نظر الوالدين تحكم المفضل التوجه في مجموعة shouldAutorotateToInterfaceOrientation هو تكريم حتى عندما يكون جزء من UINavigationController.لذلك الحل هذا هو بسيط:

إنشاء دمية UIViewController مع UIImageView الخلفية.تعيين الصورة إلى الافتراضي.صورة png التطبيق الخاص بك يستخدم عند بدء التشغيل.

عندما viewWillAppear يحصل تسمى في الجذر الخاص بك عرض وحدة تحكم موجودة فقط دمية عرض وحدة تحكم دون الرسوم المتحركة.

عندما viewDidAppear يحصل في دمية عرض المراقب المالي رفض عرض وحدة تحكم مع لطيفة عبر حل الرسوم المتحركة.

لا يقتصر هذا العمل ، لكنها تبدو جيدة!راجع للشغل, فقط للتوضيح أنا لا الجذر عرض المراقب المالي viewWillAppear مثل هذا:

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

أحدث نظام التشغيل اي فون دليل البرمجة لديها قسم كامل عن هذا, مع نموذج التعليمات البرمجية.أنا متأكد من أن هذا هو إضافة حديثة, لذلك ربما كنت أخطأت.وهذا ما يفسر كل الظروف يجب أن تتوافق مع ؛ في الأساس...

  • تعيين معلومات عن الفندق.plist خصائص (هذا يغير الموقف من شريط الحالة ، ولكن ليس رأي)
  • تدوير العرض يدويا حول مركزها ، إما UIViewController viewDidLoad:طريقة أو applicationDidFinishLaunching:طريقة أو تنفيذ دوران السيارات ("Autoresizing السلوكيات" ، صفحة 124)

ابحث عن "الشروع في وضع أفقي" ، صفحة 102.

انظر هذا الجواب: وضع أفقي فقط على اي فون أو آي باد

  1. إضافة التوجه إلى plist
  2. shouldAutorotateToInterfaceOrientation = نعم في كل الملفات

على الرغم من أن إذا كنت تستخدم الوسائط المختلطة ، قد تكون أفضل حالا مع

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top