From fdfcb7fd65f5180c11c270b477ca08cae5c19579 Mon Sep 17 00:00:00 2001 From: Danilo Priore Date: Mon, 2 May 2016 18:40:22 +0200 Subject: [PATCH] exposes methods --- AVPlayerOverlay.podspec | 2 +- AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.h | 21 +++++++++++ AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.m | 37 +++++++++++++++++++- AVPlayerOverlay/AVPlayer/AVPlayerVC.h | 2 ++ AVPlayerOverlay/AVPlayer/AVPlayerVC.m | 12 ++++++- 5 files changed, 71 insertions(+), 3 deletions(-) diff --git a/AVPlayerOverlay.podspec b/AVPlayerOverlay.podspec index be7828b..5d6d3db 100644 --- a/AVPlayerOverlay.podspec +++ b/AVPlayerOverlay.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AVPlayerOverlay' - s.version = '1.0' + s.version = '1.1' s.summary = 'AVPlayer with custom controls and full screen features.' s.license = 'MIT' s.ios.platform = '7.1' diff --git a/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.h b/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.h index 9c8dd5a..af2bb0e 100644 --- a/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.h +++ b/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.h @@ -20,5 +20,26 @@ @property (nonatomic, weak) IBOutlet UISlider *volumeSlider; @property (nonatomic, weak) AVPlayer *player; +@property (nonatomic, assign) BOOL isFullscreen; + +- (void)updateProgressBar; + +- (void)autoHidePlayerBar; +- (void)hidePlayerBar; +- (void)showPlayerBar; + +- (void)didTapGesture:(id)sender; +- (void)didPlayButtonSelected:(id)sender; +- (void)didVolumeButtonSelected:(id)sender; +- (void)didFullscreenButtonSelected:(id)sender; + +- (void)didVolumeSliderValueChanged:(id)sender; + +- (void)didVideoSliderTouchUp:(id)sender; +- (void)didVideoSliderTouchDown:(id)sender; +- (void)videoSliderEnabled:(BOOL)enabled; + +- (void)didFullScreenModeFromParentViewController:(UIViewController*)parent; +- (void)didNormalScreenModeToParentViewController:(UIViewController*)parent; @end diff --git a/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.m b/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.m index 8c4c494..c4a4f82 100644 --- a/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.m +++ b/AVPlayerOverlay/AVPlayer/AVPlayerOverlayVC.m @@ -241,18 +241,25 @@ - (void)didVolumeButtonSelected:(id)sender - (void)didFullscreenButtonSelected:(id)sender { + static BOOL navbar; + static BOOL statusbar; static CGRect current_frame; static UIView *container_view; + static UIWindow *mainWindow; static UIViewController *original_parent; UIViewController *parent = self.parentViewController; // AVPlayerViewController - UIWindow *mainWindow = [UIApplication sharedApplication].keyWindow; + + if (mainWindow == nil) + mainWindow = [UIApplication sharedApplication].keyWindow; if (_window == nil) { + statusbar = [UIApplication sharedApplication].isStatusBarHidden; original_parent = parent.parentViewController; current_frame = [parent.view convertRect:parent.view.frame toView:mainWindow]; container_view = parent.view.superview; + navbar = parent.navigationController.isNavigationBarHidden; [parent removeFromParentViewController]; [parent.view removeFromSuperview]; @@ -267,6 +274,8 @@ - (void)didFullscreenButtonSelected:(id)sender _window.rootViewController = parent; + [self didFullScreenModeFromParentViewController:parent]; + [UIView animateKeyframesWithDuration:0.5 delay:0 options:UIViewKeyframeAnimationOptionLayoutSubviews @@ -274,9 +283,16 @@ - (void)didFullscreenButtonSelected:(id)sender _window.frame = mainWindow.bounds; } completion:^(BOOL finished) { _fullscreenButton.transform = CGAffineTransformMakeScale(-1.0, -1.0); + _isFullscreen = YES; }]; + + [self.navigationController setNavigationBarHidden:YES animated:YES]; + [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; + } else { + [self didNormalScreenModeToParentViewController:parent]; + [UIView animateKeyframesWithDuration:0.5 delay:0 options:UIViewKeyframeAnimationOptionLayoutSubviews @@ -292,12 +308,31 @@ - (void)didFullscreenButtonSelected:(id)sender [parent didMoveToParentViewController:self]; [_window removeFromSuperview], self.window = nil; + [mainWindow makeKeyAndVisible]; + + _isFullscreen = NO; }]; + + [self.navigationController setNavigationBarHidden:navbar animated:YES]; + [[UIApplication sharedApplication] setStatusBarHidden:statusbar withAnimation:UIStatusBarAnimationSlide]; + } [self autoHidePlayerBar]; } +#pragma mark - Overridable Methods + +- (void)didFullScreenModeFromParentViewController:(UIViewController*)parent +{ + +} + +- (void)didNormalScreenModeToParentViewController:(UIViewController*)parent +{ + +} + #pragma mark - Volume Slider - (void)didVolumeSliderValueChanged:(id)sender diff --git a/AVPlayerOverlay/AVPlayer/AVPlayerVC.h b/AVPlayerOverlay/AVPlayer/AVPlayerVC.h index 43572c5..78e8728 100644 --- a/AVPlayerOverlay/AVPlayer/AVPlayerVC.h +++ b/AVPlayerOverlay/AVPlayer/AVPlayerVC.h @@ -8,8 +8,10 @@ #import +IB_DESIGNABLE @interface AVPlayerVC : AVPlayerViewController @property (nonatomic, strong) NSURL *videoURL; +@property (nonatomic, strong) IBInspectable NSString *overlayStoryboardId; @end diff --git a/AVPlayerOverlay/AVPlayer/AVPlayerVC.m b/AVPlayerOverlay/AVPlayer/AVPlayerVC.m index ba81d67..aa1401b 100644 --- a/AVPlayerOverlay/AVPlayer/AVPlayerVC.m +++ b/AVPlayerOverlay/AVPlayer/AVPlayerVC.m @@ -18,6 +18,16 @@ @interface AVPlayerVC() @implementation AVPlayerVC +- (instancetype)init +{ + if (self = [super init]) { + + _overlayStoryboardId = @"AVPlayerOverlayVC"; + } + + return self; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -31,7 +41,7 @@ - (void)viewDidLoad self.videoURL = note.object; }]; - _overlayVC = [self.storyboard instantiateViewControllerWithIdentifier:@"AVPlayerOverlayVC"]; + _overlayVC = [self.storyboard instantiateViewControllerWithIdentifier:_overlayStoryboardId]; [self addChildViewController:_overlayVC]; [self.view addSubview:_overlayVC.view];