iosでAVPlayer
のプラグインを作成しています。ユーザーがいつクリックするかを知る必要があるボタンをAVPlayerViewController
(ユーザーがいつ閉じるか知りたい)とし、AVPlayerViewController
オブジェクトにアクセスしません。私はイベントをチェックし、AVPlayer
のレートプロパティのみが0に設定されていることを確認しましたが、ポーズの状況でもレートは0に設定されていました。私はこれら二つの状況をどのように把握していますか?ありがとうございます。 AVPlayerViewControllerを検出しますか?
6
A
答えて
0
ウィンドウモードでプレイヤーを開発していたときに問題が発生しました。トリックなしでcurrently impossibleです。したがって、実際にはAVPlayerViewController
のフルサイズのビューであるcontentOverlayView
を観察するためにKVOを使用しました。コードは少し複雑です。以下の例では、playerView
プロパティは、View Controller(添付資料を参照)のxib/storyboardからのビューです。
#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>
static NSString * const kBoundsProperty = @"bounds";
static void * kBoundsContext = &kBoundsContext;
@interface ViewController()
@property (nonatomic, strong) AVPlayerViewController *playerViewController;
// View for windowed mode.
@property (weak, nonatomic) IBOutlet UIView *playerView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.playerViewController = [[AVPlayerViewController alloc] init];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// Because in -viewDidLoad frame is unknown.
[self loadPlayerView];
}
- (void)loadPlayerView {
NSURL *videoURL = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
AVPlayer *player = [[AVPlayer alloc] initWithURL:videoURL];
self.playerViewController.player = player;
[player play];
[self addChildViewController:self.playerViewController];
[self.playerView addSubview:self.playerViewController.view];
// MARK: I would recommend to use constraints instead of frame.
self.playerViewController.view.frame = self.playerView.bounds;
[self.playerViewController.contentOverlayView addObserver:self forKeyPath:kBoundsProperty options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:kBoundsContext];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if (context == kBoundsContext) {
CGRect oldBounds = [change[NSKeyValueChangeOldKey] CGRectValue];
CGRect newBounds = [change[NSKeyValueChangeNewKey] CGRectValue];
BOOL wasFullscreen = CGRectEqualToRect(oldBounds, [UIScreen mainScreen].bounds);
BOOL isFullscreen = CGRectEqualToRect(newBounds, [UIScreen mainScreen].bounds);
if (isFullscreen && !wasFullscreen) {
if (CGRectEqualToRect(oldBounds, CGRectMake(0.0, 0.0, newBounds.size.height, newBounds.size.width))) {
NSLog(@"Rotated fullscreen");
} else {
NSLog(@"Entered fullscreen");
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"DidEnterInFullscreen" object:nil];
});
}
} else if (!isFullscreen && wasFullscreen) {
NSLog(@"Exited fullscreen");
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"DidExitFromFullscreen" object:nil];
});
}
}
}
@end
関連する問題
- 1. AVPlayerViewControllerはローカルビデオを再生しません
- 2. avplayerviewcontrollerコントロールイベント
- 3. AVPlayerViewControllerデリゲート機能がユーザーの検索時に呼び出されない
- 4. ステータスバーをiOS 10のAVPlayerViewControllerとMPMoviePlayerControllerから削除します
- 5. イメージ検出を使用して行を検出しますか?
- 6. 迅速に、AVPlayerViewControllerでビデオを再生しながらタッチを検出する方法
- 7. AVPlayerViewControllerが回転しない
- 8. AVPlayerviewcontroller ios objective c
- 9. AVPlayerViewControllerはビデオを再生していませんか?
- 10. tvOS AVPlayerViewControllerビデオ情報
- 11. AVPlayerViewControllerの完了ボタンイベント
- 12. AVPlayerViewControl内のループAVPlayerViewController
- 13. AVPlayerViewControllerに関する問題
- 14. PHPのプレレンダリングビューを検出しますか?
- 15. イベントレット環境を検出しますか?
- 16. 内部ストレージメモリを検出しますか?
- 17. 外部リンクを検出しますか?
- 18. ネットワークのトラブルシューティングを検出しますか?
- 19. WMIでイーサネットケーブルを検出しますか?
- 20. JTextFieldでコンビネーションキーを検出しますか?
- 21. TestFlightを検出しますか?
- 22. Android Phonegap - ホームボタンを検出しますか?
- 23. Guavaのバージョンを検出しますか?
- 24. navigator.userAgentモバイルデバイスを検出しますか?
- 25. AVPlayerViewControllerでビデオを90度回転できますか?
- 26. AVPlayerViewControllerコントロールの位置を変更します
- 27. UINavigationControllerはAVPlayerViewControllerの進行状況スライダーを隠します
- 28. Swift AVPlayerViewControllerビデオの再生時にターゲットを追加します。
- 29. サブストリームを検出します
- 30. iPhoneマイクの吹き出しを検出していますか?
[ソリューション](http://stackoverflow.com/a/41281453/4593553は)私のために働きます。 – Jerome