سؤال

كعنوان ، عندما أقوم بتشغيل فيلم باستخدام MoviePlayer ، أريد أن أعرف متى سيتم رفض PlayControllerBar ، حتى أتمكن من التحكم في وجهة نظري المضافة في MoviePlayer. هل هناك أحد يعرف ذلك؟ قل لي ، شكرا.

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

المحلول

لست متأكدًا بنسبة 100 ٪ إذا كنت أفهمك بشكل صحيح. أفترض أن ما تريد القيام به هو:

  1. العب فيلمًا
  2. أضف عرضًا مخصصًا (تراكب) أعلى الفيلم (الجري).

على افتراض ما كتبته للتو ، أعتقد أنه يجب عليك التفكير في الأشياء التالية:

  1. إضافة تراكب مخصص فوق MPMoviePlayerViewController هل (بقدر ما أشعر بالقلق) مسموح به فقط/ممكن إذا تم تعيين عناصر تحكم اللاعب القياسية على لا شيء:

    [moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
    
  2. إن إضافة تراكبك المخصص أعلى اللاعب هو نفسه في الأساس 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];

آمل أن أتمكن من المساعدة.

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