From bb462f3928f78bad9a9e5e7ad94a965242017796 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Fri, 30 Sep 2016 11:37:50 +0300 Subject: [PATCH] shouldUpdateScrollViewInsets method --- .../HidingNavigationBarManager.swift | 12 +++++++---- .../Base.lproj/Main.storyboard | 20 ++++++++++--------- .../HidingNavViewController.swift | 6 +++++- .../AppIcon.appiconset/Contents.json | 10 ++++++++++ 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/HidingNavigationBar/HidingNavigationBarManager.swift b/HidingNavigationBar/HidingNavigationBarManager.swift index 36e1a53..0dfa4b1 100644 --- a/HidingNavigationBar/HidingNavigationBarManager.swift +++ b/HidingNavigationBar/HidingNavigationBarManager.swift @@ -9,6 +9,7 @@ import UIKit public protocol HidingNavigationBarManagerDelegate: class { + func hidingNavigationBarManagerShouldUpdateScrollViewInsets(_ manager: HidingNavigationBarManager, insets: UIEdgeInsets) -> Bool func hidingNavigationBarManagerDidUpdateScrollViewInsets(_ manager: HidingNavigationBarManager) func hidingNavigationBarManagerDidChangeState(_ manager: HidingNavigationBarManager, toState state: HidingNavigationBarState) } @@ -163,9 +164,7 @@ open class HidingNavigationBarManager: NSObject, UIScrollViewDelegate, UIGesture frame.size.height = extensionView.bounds.size.height extensionController.view.frame = frame } - - updateContentInsets() - + if scrolledToTop { var offset = scrollView.contentOffset offset.y = -scrollView.contentInset.top @@ -333,7 +332,12 @@ open class HidingNavigationBarManager: NSObject, UIScrollViewDelegate, UIGesture updateScrollContentInsetTop(top) } - fileprivate func updateScrollContentInsetTop(_ top: CGFloat){ + fileprivate func updateScrollContentInsetTop(_ top: CGFloat) { + let contentInset = UIEdgeInsets(top: top, left: scrollView.contentInset.top, bottom: scrollView.contentInset.left, right: scrollView.contentInset.right) + if delegate?.hidingNavigationBarManagerShouldUpdateScrollViewInsets(self, insets: contentInset) == false { + return + } + if viewController.automaticallyAdjustsScrollViewInsets { var contentInset = scrollView.contentInset contentInset.top = top diff --git a/HidingNavigationBarSample/HidingNavigationBarSample/Base.lproj/Main.storyboard b/HidingNavigationBarSample/HidingNavigationBarSample/Base.lproj/Main.storyboard index 50577b0..26957b3 100644 --- a/HidingNavigationBarSample/HidingNavigationBarSample/Base.lproj/Main.storyboard +++ b/HidingNavigationBarSample/HidingNavigationBarSample/Base.lproj/Main.storyboard @@ -1,7 +1,9 @@ - + - + + + @@ -24,27 +26,27 @@ - + - + - + - + - + diff --git a/HidingNavigationBarSample/HidingNavigationBarSample/HidingNavViewController.swift b/HidingNavigationBarSample/HidingNavigationBarSample/HidingNavViewController.swift index fd0261b..e17da35 100644 --- a/HidingNavigationBarSample/HidingNavigationBarSample/HidingNavViewController.swift +++ b/HidingNavigationBarSample/HidingNavigationBarSample/HidingNavViewController.swift @@ -82,6 +82,10 @@ class HidingNavViewController: UIViewController, UITableViewDataSource, UITableV } func hidingNavigationBarManagerDidUpdateScrollViewInsets(_ manager: HidingNavigationBarManager) { - + print("kek") + } + + func hidingNavigationBarManagerShouldUpdateScrollViewInsets(_ manager: HidingNavigationBarManager, insets: UIEdgeInsets) -> Bool { + return true } } diff --git a/HidingNavigationBarSample/HidingNavigationBarSample/Images.xcassets/AppIcon.appiconset/Contents.json b/HidingNavigationBarSample/HidingNavigationBarSample/Images.xcassets/AppIcon.appiconset/Contents.json index 118c98f..b8236c6 100644 --- a/HidingNavigationBarSample/HidingNavigationBarSample/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/HidingNavigationBarSample/HidingNavigationBarSample/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29",