تحديد التوجه برمجيا في فيوديدلود لا يعمل
-
23-12-2019 - |
سؤال
لقد خلق التطبيق لباد التي يجب أن يتم عرض الشاشة الرئيسية فقط في وضع عمودي.لذلك لقد استخدمت التعليمات البرمجية أدناه في فيوديدلود.
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];
لكنها لا تعمل.أنا باستخدام دائرة الرقابة الداخلية 7 مع كسكودي 5.إذا فتحت تطبيقي من الوضع الأفقي ، فإنه يتحول تلقائيا إلى الوضع الرأسي.ولكن أنا الحصول على مثل هذا:
ولكن يجب أن يكون مثل هذا:
هل يمكن لأي شخص مساعدتي في حل هذه المشكلة.شكرا مقدما.
المحلول
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];
تم إهمال هذه الطريقة.لا يمكنك استخدام هذه الطريقة بعد الآن.
https://stackoverflow.com/a/12813644/1405008
يعطي الرابط أعلاه تفاصيل حول كيفية توفير الوضع الرأسي فقط لـ UIViewController
.
إذا كنت دفعت إلى NavigationViewController
ثم حاول هذا.
نصائح أخرى
التعليمة البرمجية التالية على وشك تحويل عرض NavigationController من صورة إلى المناظر الطبيعية برمجيا:
giveacodicetagpre.آمل أن أقدم لك بعض الأفكار الأخرى.
نسخ هذا الرمز في FACTDIDLOAD الخاص بك
giveacodicetagpre.set bool وفقا لمتطلباتكم
منك Screenshots، يمكنني أن أرى أن تطبيقك هو قاعدة تبويب.قبل أيام قليلة واجهت نفس المشكلة.أنا حلها.سألت سؤالا تقريبا بنفسك.ثم بعد بضع ساعات من القراءة، حل المشكلة.هناك رابط إلى My سؤال وجواب .
هناك الكثير من الأسئلة والأجوبة المشابهة حول SO، ولكن بطريقة ما لم يعمل أي منها معي، كما كنت بحاجة للسماح بذلك الوضع الرأسي فقط على iPhone, ، و الوضع الأفقي فقط على iPad, ، لذا أشارك الحل الخاص بي:
قم بإزالة جميع الطرق المتعلقة بتوجيه الجهاز (
shouldAutoRotate, supportedInterfaceOrientations, preferredInterfaceOrientations
, الخ) لأنها قد تكون متعارضة مع بعضها البعضفي إعدادات المشروع، قم بتمكين جميع الأوضاع الأربعة:عمودي، مقلوبًا، أفقيًا على اليسار، أفقيًا على اليمين
اختر طريقة لتحديد نوع الجهاز (iPhone أو iPad).انا استخدم
UIScreen.mainScreen().bounds.height which
ليست مثالية ولكنها تناسب احتياجاتيضع ما يلي في AppDelegate
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if UIScreen.mainScreen().bounds.height < 760 { //iPhone UIApplication.sharedApplication().setStatusBarOrientation(.Portrait, animated: false); return UIInterfaceOrientationMask.Portrait; } else { UIApplication.sharedApplication().setStatusBarOrientation(.LandscapeLeft, animated: false); return UIInterfaceOrientationMask.Landscape; } }
تم اختباره على Xcode 7.1.1 على جميع أجهزة محاكاة iPhone وiPad التي تعمل بنظام iOS9.1