From 2d901f472c3e53c633bbef54263dd47846f0a03d Mon Sep 17 00:00:00 2001 From: EuanChan Date: Mon, 4 Aug 2014 14:16:19 +0800 Subject: [PATCH] fix padding unnecessary status padding When the navigation controller is not at the top of the screen, we should not pad the status bar height. --- TSMessages/Classes/TSMessage.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/TSMessages/Classes/TSMessage.m b/TSMessages/Classes/TSMessage.m index 59e6bfd6..d2514050 100755 --- a/TSMessages/Classes/TSMessage.m +++ b/TSMessages/Classes/TSMessage.m @@ -207,23 +207,26 @@ - (void)fadeInCurrentNotification else currentNavigationController = (UINavigationController *)currentView.viewController.parentViewController; + BOOL isCurrentNavigationAtTop = currentNavigationController.view.frame.origin.y > 0; + BOOL isViewIsUnderStatusBar = [[[currentNavigationController childViewControllers] firstObject] wantsFullScreenLayout]; if (!isViewIsUnderStatusBar && currentNavigationController.parentViewController == nil) { isViewIsUnderStatusBar = ![TSMessage isNavigationBarInNavigationControllerHidden:currentNavigationController]; // strange but true } + if (![TSMessage isNavigationBarInNavigationControllerHidden:currentNavigationController]) { [currentNavigationController.view insertSubview:currentView belowSubview:[currentNavigationController navigationBar]]; verticalOffset = [currentNavigationController navigationBar].bounds.size.height; - if ([TSMessage iOS7StyleEnabled] || isViewIsUnderStatusBar) { + if (([TSMessage iOS7StyleEnabled] || isViewIsUnderStatusBar) && !isCurrentNavigationAtTop) { addStatusBarHeightToVerticalOffset(); } } else { [currentView.viewController.view addSubview:currentView]; - if ([TSMessage iOS7StyleEnabled] || isViewIsUnderStatusBar) { + if (([TSMessage iOS7StyleEnabled] || isViewIsUnderStatusBar) && !isCurrentNavigationAtTop) { addStatusBarHeightToVerticalOffset(); } } @@ -231,7 +234,8 @@ - (void)fadeInCurrentNotification else { [currentView.viewController.view addSubview:currentView]; - if ([TSMessage iOS7StyleEnabled]) { + BOOL isCurrentViewAtTop = [currentView.viewController.view convertPoint:currentView.frame.origin toView:[UIApplication sharedApplication].keyWindow].y == 0; + if ([TSMessage iOS7StyleEnabled] && !isCurrentViewAtTop) { addStatusBarHeightToVerticalOffset(); } }