BottomSheet is an implementation of custom modal presentation style for thumb-friendly interactive views anchored to the bottom of the screen.
UIViewControllerTransitioningDelegate
for dismissable modal bottom sheetsBottomSheetView
for displaying complementary content as a standard bottom sheet view
BottomSheet is available through Carthage. Append this line to your Cartfile
:
github "finn-no/BottomSheet"
BottomSheet is also available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "FINNBottomSheet", git: "https://github.com/finn-no/BottomSheet.git"
To integrate using Apple's Swift package manager, add the following as a dependency to your Package.swift:
.package(name: "FINNBottomSheet", url: "https://github.com/finn-no/BottomSheet.git", .upToNextMajor(from: "1.0.0"))
View controller -based presentation:
import FINNBottomSheet
let transitioningDelegate = BottomSheetTransitioningDelegate(
contentHeights: [.bottomSheetAutomatic, UIScreen.main.bounds.size.height - 200],
startTargetIndex: 0
)
let viewController = UIViewController()
viewController.transitioningDelegate = transitioningDelegate
viewController.modalPresentationStyle = .custom
present(viewController, animated: true)
View -based presentation:
import FINNBottomSheet
let contentView = UIView()
contentView.backgroundColor = .red
let bottomSheetView = BottomSheetView(
contentView: contentView,
contentHeights: [100, 500]
)
// Can be presented in any UIView subclass
bottomSheetView.present(in: viewController.view, targetIndex: 0)
.bottomSheetAutomatic
:When using .bottomSheetAutomatic
to calculate the content height and your view is constrained using the layoutMarginsGuide
, you must be aware that the returned content height may actually be higher than the compressed layout size of your view. Also, it may result in the transition animation freezing. This problem is avoided simply by not using the layoutMarginsGuide
.
To avoid "glitches" you might need to keep a strong reference to the transitioning delegate (BottomSheetTransitioningDelegate
) until the bottom sheet animation is complete.
bundle install
(dependencies will be installed in ./bundler
)FINN_GITHUB_COM_ACCESS_TOKEN
.
repo
..env
file or adding it to .bashrc
/.bash_profile
). Don't forget to run source .env
(for whichever file you set the environment variables in) if you don't want to restart your shell.bundle exec fastlane verify_environment_variable
to see if it is configured correctly.bundle exec fastlane verify_ssh_to_github
to see if ssh to GitHub is working.bundle exec fastlane
and choose appropriate lane. Follow instructions, you will be asked for confirmation before all remote changes.This project has a Gemfile
that specify some development dependencies, one of those is pr_changelog
which is a tool that helps you to generate changelogs from the Git history of the repo. You install this by running bundle install
.
To get the changes that have not been released yet just run:
$ pr_changelog
If you want to see what changes were released in the last version, run:
$ pr_changelog --last-release
You can always run the command with the --help
flag when needed.