هل من الممكن استخدام انتقالات iOS 7 UIViewController (التفاعلية على وجه التحديد) مع وحدات التحكم في العرض الفرعي؟

StackOverflow https://stackoverflow.com//questions/22003967

سؤال

هناك العديد من البرامج التعليمية حول استخدام واجهة برمجة تطبيقات الانتقالات iOS 7 UIViewController الجديدة وواجهة برمجة تطبيقات الانتقال التفاعلية الجديدة الرائعة.ومع ذلك، لا يبدو أن أيًا من هذه يشير إلى إضافة وإزالة وحدات تحكم العرض التابعة بشكل تفاعلي، على الرغم من أنه في فيديو WWDC 2013 حول انتقالات UIViewController المخصصة، يُظهر موظف Apple ما أتخيله على أنه وحدة تحكم عرض فرعية مقدمة مع انتقال مخصص:

enter image description here

(أفترض أن هذا يظهر كوحدة تحكم في العرض أعلى وحدة أخرى على ما يبدو.لا أعتقد أنه يمكنك الانتقال إلى UIViewController جديد مع إبقاء الآخر مرئيًا خلفه...)

هل من الممكن تحقيق مثل هذا الشيء باستخدام وحدات التحكم في عرض الطفل؟

في حالتي المحددة، أقوم بإضافة أ UIPageViewController معرض الصور كوحدة تحكم في عرض الطفل ولكن لا يزال بإمكانك رؤية وحدة التحكم في العرض التي تمت إضافتها إليها إذا كانت الصورة UIPageViewController لا يشغل كامل الشاشة.لقد أضفت أيضًا القدرة على تمرير صورة خارج الشاشة (على غرار إغلاق المهام المتعددة لنظام التشغيل iOS 7) وأود أن يكون ذلك بمثابة نافذة تحكم تفاعلية للعرض.

هل هناك أي دروس لمثل هذا الشيء؟هل هذا ممكن حتى؟هل سيكون من الأفضل القيام بذلك مع presentViewController بطريقة ما من شأنها أن تسمح لي بمشاهدة وحدة التحكم في العرض أدناه؟

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

المحلول

إذا شاهدت الفيديو مرة أخرى، ستلاحظ في الساعة 12:15 مراجع GuideSodicetagCodeCeTagCode. هذا نمط العرض التقديمي يعني عدم إزالته "من عرض" عرض "عرض" من التسلسل الهرمي الرأي، مما يتيح لك إنشاء النماذج الخاصة بك. لذلك في حالتك، ستفعل ما يلي:

giveacodicetagpre.

كائن الانتقال الرسوم المتحركة سيكون مسؤولا عن ضمان أن إطار تحكم عرض صفحتك ليس ملء الشاشة. احذر فقط من الآثار المترتبة على إدارة وحدات تحكم عرض مجمعتين على الشاشة في نفس الوقت. أود أن أوصي بأخذ لقطة من لوحات تحكم الرؤية الأولى الخاصة بك، ثم اجعلها خلفية عرض تحكم الرؤية الثانية. ستكون وحدة تحكم عرض الصفحة بعد ذلك طفل من وحدة التحكم الثانية.

قد تجد هذا البرنامج التعليمي مفيدا - http://www.teehanlax.com/ بلوق / مخصص UiviewController-التحولات /

بشكل أفضل حتى الآن، قام شخص ما بالانتقال إلى دورة النسخ المتماثلة من نموذج 218 على GitHub - https://github.com/soleares / solpresentingfun

الترميز السعيد

نصائح أخرى

يبدو أنك تريد إجراء انتقال مخصص باستخدام حاوية UIViewController.يعد هذا اقتراحًا أكثر تعقيدًا من التحولات النموذجية لأنك تحتاج إلى توفير الكائن الذي سيتم تنفيذه UIViewControllerContextTransitioning نفسك.

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

  1. لا تخف من تحديد المفاتيح الخاصة بك من أجل: viewControllerForKey:.لقد وجدت أنني بحاجة إلى إشارة إلى وحدة تحكم العرض الأصلية في كائن الرسوم المتحركة الخاص بي.كان الحل الأنظف هو تحديد مفتاح آخر لتمريره إلى هذه الطريقة.يعمل هذا بشكل جيد جدًا إذا كان الكائن الذي ينفذ هذا البروتوكول هو أيضًا وحدة تحكم العرض الأصلية.

  2. بيع الرسوم المتحركة الخاصة بك عن طريق الاتصال animationControllerForPresentedController:presentingController:sourceController بدلاً من إنشاء الرسوم المتحركة الخاصة بك بنفسك.مرة أخرى، بدا هذا وكأنه نهج أنظف لأنه يعمل ضمن القصد من البروتوكولات.هذه هي الطريقة التي يمكن أن يتم استدعاؤها بخلاف ذلك كجزء من presentViewController:animated:completion:.

  3. يستخدم UIModalPresentationNone.نظرًا لأنك تتحدث على وجه التحديد عن وحدات التحكم في عرض الأطفال، فأنت لا تقدم عرضًا تقديميًا مشروطًا.

  4. أضف استدعاءات احتواء وحدة التحكم في العرض، على سبيل المثال. addChildViewController: في الرسوم المتحركة الخاصة بك.هذا هو المكان الذي ستضيف فيه وحدة تحكم العرض الجديدة إلى التسلسل الهرمي لوحدة تحكم العرض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top