diff --git a/Classes/MWPhotoBrowser.h b/Classes/MWPhotoBrowser.h index 92f4023..627a236 100644 --- a/Classes/MWPhotoBrowser.h +++ b/Classes/MWPhotoBrowser.h @@ -38,6 +38,7 @@ // Misc BOOL performingLayout; BOOL rotating; + BOOL _disappearing; } @@ -79,7 +80,7 @@ // Controls - (void)cancelControlHiding; - (void)hideControlsAfterDelay; -- (void)setControlsHidden:(BOOL)hidden; +- (void)setControlsHidden:(BOOL)hidden animated:(BOOL)animated; - (void)toggleControls; // Properties diff --git a/Classes/MWPhotoBrowser.m b/Classes/MWPhotoBrowser.m index b85091a..ffad120 100644 --- a/Classes/MWPhotoBrowser.m +++ b/Classes/MWPhotoBrowser.m @@ -179,6 +179,10 @@ } - (void)viewWillDisappear:(BOOL)animated { + + // Controls + _disappearing = YES; + [self setControlsHidden:NO animated:NO]; // Super [super viewWillDisappear:animated]; @@ -199,8 +203,7 @@ } } - // Cancel any hiding timers - [self cancelControlHiding]; + } @@ -459,7 +462,7 @@ - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { // Hide controls when dragging begins - [self setControlsHidden:YES]; + [self setControlsHidden:YES animated:YES]; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { @@ -505,7 +508,10 @@ #pragma mark - #pragma mark Control Hiding / Showing -- (void)setControlsHidden:(BOOL)hidden { +- (void)setControlsHidden:(BOOL)hidden animated:(BOOL)animated { + + // Cancel any timers + [self cancelControlHiding]; // Get status bar height if visible CGFloat statusBarHeight = 0; @@ -516,9 +522,9 @@ // Status Bar if ([UIApplication instancesRespondToSelector:@selector(setStatusBarHidden:withAnimation:)]) { - [[UIApplication sharedApplication] setStatusBarHidden:hidden withAnimation:UIStatusBarAnimationFade]; + [[UIApplication sharedApplication] setStatusBarHidden:hidden withAnimation:animated?UIStatusBarAnimationFade:UIStatusBarAnimationNone]; } else { - [[UIApplication sharedApplication] setStatusBarHidden:hidden animated:YES]; + [[UIApplication sharedApplication] setStatusBarHidden:hidden animated:animated]; } // Get status bar height if visible @@ -533,11 +539,13 @@ self.navigationController.navigationBar.frame = navBarFrame; // Bars - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.35]; + if (animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.35]; + } [self.navigationController.navigationBar setAlpha:hidden ? 0 : 1]; [toolbar setAlpha:hidden ? 0 : 1]; - [UIView commitAnimations]; + if (animated) [UIView commitAnimations]; // Control hiding timer // Will cancel existing timer but only begin hiding if @@ -557,14 +565,14 @@ // Enable/disable control visiblity timer - (void)hideControlsAfterDelay { - [self cancelControlHiding]; - if (![UIApplication sharedApplication].isStatusBarHidden) { + if (!_disappearing && ![UIApplication sharedApplication].isStatusBarHidden) { + [self cancelControlHiding]; controlVisibilityTimer = [[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(hideControls) userInfo:nil repeats:NO] retain]; } } -- (void)hideControls { [self setControlsHidden:YES]; } -- (void)toggleControls { [self setControlsHidden:![UIApplication sharedApplication].isStatusBarHidden]; } +- (void)hideControls { [self setControlsHidden:YES animated:YES]; } +- (void)toggleControls { [self setControlsHidden:![UIApplication sharedApplication].isStatusBarHidden animated:YES]; } #pragma mark - #pragma mark Rotation diff --git a/Classes/ZoomingScrollView.m b/Classes/ZoomingScrollView.m index c332190..7f33d46 100644 --- a/Classes/ZoomingScrollView.m +++ b/Classes/ZoomingScrollView.m @@ -231,7 +231,8 @@ #pragma mark Tap Detection - (void)handleSingleTap:(CGPoint)touchPoint { - [photoBrowser performSelector:@selector(toggleControls) withObject:nil afterDelay:0.2]; + [photoBrowser toggleControls]; +// [photoBrowser performSelector:@selector(toggleControls) withObject:nil afterDelay:0.2]; } - (void)handleDoubleTap:(CGPoint)touchPoint {