كيف تعرف متى سيتم رفض PlayControllerBar of MoviePlayer؟
-
01-10-2019 - |
سؤال
كعنوان ، عندما أقوم بتشغيل فيلم باستخدام MoviePlayer ، أريد أن أعرف متى سيتم رفض PlayControllerBar ، حتى أتمكن من التحكم في وجهة نظري المضافة في MoviePlayer. هل هناك أحد يعرف ذلك؟ قل لي ، شكرا.
المحلول
لست متأكدًا بنسبة 100 ٪ إذا كنت أفهمك بشكل صحيح. أفترض أن ما تريد القيام به هو:
- العب فيلمًا
- أضف عرضًا مخصصًا (تراكب) أعلى الفيلم (الجري).
على افتراض ما كتبته للتو ، أعتقد أنه يجب عليك التفكير في الأشياء التالية:
إضافة تراكب مخصص فوق
MPMoviePlayerViewController
هل (بقدر ما أشعر بالقلق) مسموح به فقط/ممكن إذا تم تعيين عناصر تحكم اللاعب القياسية على لا شيء:[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
إن إضافة تراكبك المخصص أعلى اللاعب هو نفسه في الأساس
addSubview
الإجراء كما في أي وجهة نظر أخرى[moviePlayerViewController.view addSubview:overlay];
سيعمل الكود / المفهوم أعلاه على 3.2 وبعد ذلك ، حيث قرأت للتو الآن أنت تتطور من الواضح لـ 3.0
بدلاً من ذلك حذف الجزء الأول من إجابتي ، سأشرح الآن كيفية تحقيق نفس التأثير على 3.0
في 3.0 ، أصبح الأمر أكثر صعوبة (كما تعلمون الآن). MPMoViePlayerController ليس وحدة تحكم عرض وتعمل فقط في وضع ملء الشاشة. بمجرد أن يبدأ الفيلم في اللعب ، يتغير keywindow! لذلك نحن نستفيد من ذلك من خلال تنفيذ ما يلي:
1) ضمن فصلك الذي يتضمن mpmovieplayerController ، ابدأ في الاستماع إلى UIWindowDidBecomeKeyNotification
من خلال القيام بما يلي:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(keyWindowChanged:)
name: UIWindowDidBecomeKeyNotification
object: nil];
2) مع الخاص بك keyWindowChanged:
الطريقة التي يمكنك إضافة تراكبك ، فإن Snipplet التالي هو بالضبط الطريقة التي قمت بتنفيذها:
- (void)keyWindowChanged: (id) sender {
//NSLog(@"keyWindowChanged");
[[NSNotificationCenter defaultCenter] removeObserver: self name: UIWindowDidBecomeKeyNotification object: nil];
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
[moviePlayerWindow addSubview: overlayController.view];
[overlayController performSelector:@selector(fadeIn)];
}
مرة أخرى ، هذا يعمل فقط إذا كان MovieControllMode
هو "مخفي" من خلال القيام بذلك:
[newMPController setMovieControlMode: MPMovieControlModeHidden];
آمل أن أتمكن من المساعدة.