BottomHalfModal is a customizable half modal UI used in merpay.
github "mercari/BottomHalfModal"
pod "BottomHalfModal"
BottomHalfModal can present any type of UIVIewController
as content. The presented view controller needs to confirm to SheetContentHeightModifiable
and define sheetContentHeightToModify
that is the height of the half modal. Then call adjustFrameToSheetContentHeightIfNeeded()
in viewDidAppear
.
import BottomHalfModal
class XXXXViewController: SheetContentHeightModifiable {
var sheetContentHeightToModify: CGFloat = 320
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
adjustFrameToSheetContentHeightIfNeeded()
}
}
Then, call presentBottomHalfModal(_ viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?)
to show the content.
let vc = XXXXViewController()
presentBottomHalfModal(vc, animated: true, completion: nil)
If you want to use UINavigationController
in BottomHalfModal, use BottomHalfModalNavigationController
. It handles content height update while push and pop navigations.
let vc = XXXXViewController()
let nav = BottomHalfModalNavigationController(rootViewController: vc)
presentBottomHalfModal(nav, animated: true, completion: nil)
If you support multiple device orientation, please call adjustFrameToSheetContentHeightIfNeeded()
in viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
too.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
adjustFrameToSheetContentHeightIfNeeded(with: coordinator)
}
Basic |
---|
TableView |
---|
Navigation |
---|
StickyButton |
---|
Input |
---|
Please read the CLA carefully before submitting your contribution to Mercari. Under any circumstances, by submitting your contribution, you are deemed to accept and agree to be bound by the terms and conditions of the CLA.
Copyright 2019 Mercari, Inc.
Licensed under the MIT License.
link |
Stars: 95 |
Last commit: 3 years ago |
Fix rotation bug
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics