我可以使用 iOS youtube 助手 iOS-youtube-player-helper 从 youtube 播放器的 web 视图中标题为 FigPluginView 的子视图访问此功能。
FigPluginView class dump reference
创建一个公开以下方法的自定义 UIView 类头:
#import <Foundation/Foundation.h>
@interface WMFigPluginView : NSObject
-(void)scriptEnterFullScreen;
@end
将自定义的 FigPluginView 和 YouTube 播放器导入到 ViewController 接口()
#import <youtube-ios-player-helper/YTPlayerView.h>
#import "WMFigPluginView.h"
@property(nonatomic, strong) YTPlayerView *playerView;
使用以下方法来初始化youtube播放器,监控状态变化,在FigPluginView中找到并调用全屏脚本。
- (void)presentYoutubeVideo {
if ([self.view.subviews containsObject:_playerView]){
[_playerView removeFromSuperview];
}
CGRect playerFrame = CGRectMake(0, 0, 0, 0);
_playerView = [[YTPlayerView alloc]initWithFrame:playerFrame];
_playerView.delegate = self;
[_playerView.webView setAllowsInlineMediaPlayback: NO];
[self.view addSubview:_playerView];
[self.playerView loadWithVideoId:@"YouTubeVideoID" playerVars:@{@"showinfo":@0,@"modestbranding":@1,@"autoplay":@1,@"playsinline":@0}];
}
-(void)playerViewDidBecomeReady:(YTPlayerView *)playerView {
[_playerView playVideo];
}
-(void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state {
//stop activity indicator
if (state == kYTPlayerStateBuffering) {
//start activity indicator
}
if (state == kYTPlayerStatePlaying) {
WMFigPluginView *figPluginView = (WMFigPluginView*)[self findFigPluginView:_playerView.webView];
[figPluginView scriptEnterFullScreen];
}
}
- (UIView *)findFigPluginView:(UIView *)view {
for (__unsafe_unretained UIView *subview in view.subviews) {
if ([NSStringFromClass(subview.class) hasSuffix:@"FigPluginView"]) {
return subview;
} else if (subview.subviews.count > 0) {
return [self findFigPluginView:subview];
}
}
return nil;
}
希望这会有所帮助!