From ba68688528be1b995781ff1574f05b3ea8f6267f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eimantas=20Vaic=CC=8Ciu=CC=84nas?= Date: Fri, 13 Oct 2017 14:20:56 +0300 Subject: [PATCH] Include insets when calculating `minOffset` --- Source/SlideOutable.swift | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Source/SlideOutable.swift b/Source/SlideOutable.swift index 1b8fd42..83f50a4 100644 --- a/Source/SlideOutable.swift +++ b/Source/SlideOutable.swift @@ -200,7 +200,21 @@ open class SlideOutable: ClearContainerView { return bounds.height - currentOffset } - var minOffset: CGFloat { return isScrollStretchable ? topPadding : max(topPadding, bounds.height - (header?.bounds.height ?? 0) - scroll.contentSize.height) } + var minOffset: CGFloat { + if isScrollStretchable { + return topPadding + } else { + let insets: UIEdgeInsets + if #available(iOS 11.0, *) { + insets = scroll.adjustedContentInset + } else { + insets = scroll.contentInset + } + let insetsOffset = insets.bottom + insets.top + let calculatedOffset = bounds.height - (header?.bounds.height ?? 0) - scroll.contentSize.height - insetsOffset + return max(topPadding, calculatedOffset) + } + } var maxOffset: CGFloat { return max(minOffset, bounds.height - minContentHeight) } var anchorOffset: CGFloat? { return anchorFraction.flatMap { bounds.height * (1 - $0) } }