diff --git a/Example/AloeStackViewExample/ViewControllers/MainViewController.swift b/Example/AloeStackViewExample/ViewControllers/MainViewController.swift index 58b14bd..11494f2 100644 --- a/Example/AloeStackViewExample/ViewControllers/MainViewController.swift +++ b/Example/AloeStackViewExample/ViewControllers/MainViewController.swift @@ -35,6 +35,8 @@ public class MainViewController: AloeStackViewController { private func setUpStackView() { stackView.automaticallyHidesLastSeparator = true + edgesForExtendedLayout = [] + navigationController?.navigationBar.isTranslucent = false } private func setUpRows() { @@ -43,6 +45,7 @@ public class MainViewController: AloeStackViewController { setUpHiddenRows() setUpExpandingRowView() setUpHorizontalRow() + // when hide PhotoRow stackview can also scroll setUpPhotoRow() } diff --git a/Sources/AloeStackView/AloeStackViewController.swift b/Sources/AloeStackView/AloeStackViewController.swift index 5c4aa3f..78371db 100644 --- a/Sources/AloeStackView/AloeStackViewController.swift +++ b/Sources/AloeStackView/AloeStackViewController.swift @@ -40,6 +40,20 @@ open class AloeStackViewController: UIViewController { stackView.flashScrollIndicators() } } + + open override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + if stackViewCanAlwaysScroll { + if stackView.contentSize.height < view.frame.size.height { + var bottomPadding: CGFloat = 0 + if #available(iOS 11.0, *) { + bottomPadding = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0 + } + // contentSize height need to bigger than view height + stackView.contentSize = CGSize(width: 0, height: view.frame.size.height - bottomPadding + 0.5) + } + } + } // MARK: Public @@ -50,5 +64,10 @@ open class AloeStackViewController: UIViewController { /// /// Default is `false`. open var automaticallyFlashScrollIndicators = false + + /// When true, stackView can always scroll + /// + /// Default is `true`. + open var stackViewCanAlwaysScroll = true }