Мне кажется, я нашел решение. Если кому-то еще нужна эта функциональность, вот как я заставил ее работать:
Я использовал найденный код здесь , чтобы найти подпредставление MPInlineVideoOverlay в массиве представлений MPMoviePlayer. Затем я изменил его следующим образом:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {</p>
float newValue = 0;
if([change objectForKey:NSKeyValueChangeNewKey] != [NSNull null])
{
newValue = [[change objectForKey:NSKeyValueChangeNewKey] floatValue];
}
NSLog(@"player controls are visible: %@", newValue ? @"YES" : @"NO");
self.controlsView.alpha = newValue;
}
-(void)recursiveViewTraversal:(UIView*)view counter:(int)counter {
NSLog(@"Depth %d - %@", counter, view); //For debug
if([view isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) {
//Add any additional controls you want to have fade with the standard controls here
mainControlsView = view;
} else {
for(UIView *child in [view subviews]) {
[self recursiveViewTraversal:child counter:counter+1];
}
}
}
-(void)setupAdditionalControls {
//Call after you have initialized your MPMoviePlayerController (probably viewDidLoad)
mainControlsView = nil;
[self recursiveViewTraversal:moviePlayer.view counter:0];
//check to see if we found it, if we didn't we need to do it again in 0.1 seconds
if(mainControlsView) {
[mainControlsView addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:NULL];
} else {
[self performSelector:@selector(setupAdditionalControls) withObject:nil afterDelay:0.1];
}
}`
Где mainControlsView - это стандартные элементы управления Apple для MPMoviePlayer, а self.controlsView - это мое представление с моими пользовательскими элементами управления. Значение ключа I Соблюдайте свойство alpha в стандартном представлении элементов управления и меняйте его, чтобы оно соответствовало при каждом его изменении.
Rob