This is iOS Maps like anchored bottom sheet with configurable anchors and reusable BottomSheetView
, that can be used inside provided modal controller or without it.
BottomSheetView
supports all kinds of UIView's
including UIScrollView
and it's ancestors as a container view.
BottomSheetViewController
is intended to be used as a modal presented controller.
To configure BottomSheetView
you should use BottomSheetViewConfiguration
struct like this:
let config = BottomSheetViewConfiguration(
contentView: UIView(),
parentViewController: self,
defaultPosition: .middle(),
positions: [.top(), .middle(), .bottom()],
isSlidingToAppear: false,
isPullIndicatorNeeded: true,
closeButtonIcon: UIImage(named: "closeIcon"),
isDismissAllowed: false,
cornerRadius: 16
)
Supported anchors:
- Top
- Middle
- Bottom
- Fixed
- By content
Each anchor has associated value, which will override default height for this anchor. By content mode is not yet implemented, feel free to open a pull request.
Once configuration is done, you should create BottomSheetView
like this:
let bottomSheetView = BottomSheetView(configuration: configuration)
If you want to use this view for some complex UI cases, BottomSheetView
will handle the pan gesture and will notify BottomSheetViewDelegate
in heightDidChange(to height: CGFloat)
method
If you want to implement general pop-up behaviour, you should use BottomSheetViewController
. Create and present it like so:
let bottomSheetViewController = BottomSheetViewController(bottomSheetView: bottomSheetView)
bottomSheetViewController.delegate = self
bottomSheetViewController.present(from: self)
AnchoredBottomSheet is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'AnchoredBottomSheet', '~> 1.6.3'
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate AnchoredBottomSheet into your Xcode project using Carthage, specify it in your Cartfile
:
github "havebeenfitz/anchoredbottomsheet" "1.6.3"
Run carthage update
to build the framework and drag the built SnapKit.framework
into your Xcode project.
Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.
Xcode 14+ is required to build AnchoredBottomSheet using Swift Package Manager.
To integrate AnchoredBottomSheet into your Xcode project using Swift Package Manager, add it to the dependencies value of your Package.swift
:
dependencies: [
.package(
url: "https://github.com/havebeenfitz/anchoredbottomsheet.git",
.upToNextMajor(from: "1.6.3")
)
]
If you prefer not to use either of the aforementioned dependency managers, you can integrate AnchoredBottomSheet into your project manually.
Xcode 14+, iOS deployment target ≥ 12
havebeenfitz, max.kraev@gmail.com
AnchoredBottomSheet is available under the MIT license. See the LICENSE file for more info.