English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
المقدمة
ربما واجهت العديد منكم مشكلة تدوير الشاشة في تطوير iOS، مثل الرغبة في تحقيق تدوير مختلف للصفحات المحددة، ولكن لا يمكن الوصول إلى هذا الطلب بسهولة نظرًا لأن الطريقة التي يقدمها النظام هي طريقة نظام التوجيهي العالمية. الحل التقليدي هو استنساخ UINavrgationViewController وتعديل الطرق ذات الصلة في هذا الصنف، مما يؤدي إلى إنتاج ملفين إضافيين على الأقل والكثير من الكود، وهذا ليس ما نريده بالضرورة. سأستخدم طريقة أساسية لتشكيل هذا المشكلة.
المنطق الأساسي
تغيير الطريقة العالمية لـ UINavrgationViewController بشكل ديناميكي، واستبدال الطرق الخاصة بنا لدعم اتجاهات الشاشة وـ shouldAutorotate وواجهة التحكم في التوجيه بالنظام التوجيهي.
إعداد العمل
تكوين اتجاهات الدعم للمشروع
تنفيذ الكود
كتابة الطريقة التالية في واجهة viewDidLoad لكل صنف آباء جميع واجهات الرؤية، يمكن تكوين اتجاهات الشاشة بشكل صحيح.
//الحصول على طريقة دعم التدوير الحالية للنظام التوجيهي الحالي Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate)); //الحصول على طريقة دعم التدوير الحالية للنظام التوجيهي Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate)); //تبادل الطرق method_exchangeImplementations(selfMtihod, navr); //النص الأنalogous Method selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations)); Method navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations)); method_exchangeImplementations(selfOrientation, navrOrientation);
طريقة الاستخدام
إعادة كتابة methods supportedInterfaceOrientations و shouldAutorotate في الكلاس الأب يعني تحديد خصائص دوران الشاشة الافتراضية.
في كل فئة فرعية من محاولات التحكم في المحول، يمكنك إعادة كتابة methods supportedInterfaceOrientations و shouldAutorotate لتحقيق متطلبات إدارة اتجاهات الواجهة المحددة.
ما تم ذكره أعلاه هو شرح مفصل لمكتبة Runtime لحل مشكلة دوران الشاشة، آمل أن يكون هذا مفيدًا لكم، إذا كان لديكم أي استفسارات، فلا تترددوا في ترك تعليق، وسأقوم بالرد على رسائلكم في أقرب وقت، وأشكركم أيضًا على دعمكم لموقع呐喊 لتعليم البرمجة!
البيان: محتوى هذا المقال تم جمعه من الإنترنت، حقوق الطبع والتأليف مملوكة للمالك الأصلي، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت الذين قاموا بتحميله، ويحمل الموقع حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي ولا يتحمل الموقع أي مسؤولية قانونية تتعلق بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق الطبع والتأليف، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لإبلاغنا، وقدم الأدلة ذات الصلة، وسيتم حذف المحتوى المزعوم عن الفنون المقررة.