- Notifications
You must be signed in to change notification settings - Fork67
iPhone Maps App bottom sheet - A Protocol Oriented Approach
License
OfTheWolf/UBottomSheet
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Features | |
---|---|
📍 | Apple Maps bottom sheet behaviour |
⚓ | Supports panning with UIScrollView and UIView |
🌒 | Allows adding dimmable background view |
📱 | Set sheet content as UIViewController or UINavigationController |
📖 | Navigation inside sheet with UINavigationController |
🌈 | Add one or more sheet stop positions |
🎯 | Change sheet position programmatically |
🌀 | Present as many sheet as you want |
🚀 | Move multiple sheets simultaneously or seperately |
🏹 | Rubber banding |
👋 | Dismiss at bottom |
Apple Maps & Childs | Navigation In Sheet | Pull To Dismiss | Multiple Sheet Positions |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
To run the example project, clone the repo, and runpod install
from the Example directory first.
Bottom sheet child view controllers must conform to the Draggable protocol.
classMapsDemoBottomSheetController:UIViewController,Draggable{@IBOutlet weakvartableView:UITableView!overridefunc viewDidLoad(){ super.viewDidLoad()if #available(iOS11.0,*){ tableView.contentInsetAdjustmentBehavior=.never}else{ automaticallyAdjustsScrollViewInsets=false} tableView.delegate=self tableView.dataSource=self}overridefunc viewWillAppear(_ animated:Bool){ super.viewWillAppear(animated) //adds pan gesture recognizer to draggableView() sheetCoordinator?.startTracking(item:self)}// MARK: Draggable protocol implementationsvarsheetCoordinator:UBottomSheetCoordinator?func draggableView()->UIScrollView?{return tableView}}
Create a UBottomSheetCoordinator from the main view controller. Use the UBottomSheetCoordinator to add and configure the sheet.
// parentViewController: main view controller that presents the bottom sheet// call this within viewWillLayoutSubViews to make sure view frame has measured correctly. see example projects.letsheetCoordinator=UBottomSheetCoordinator(parent: parentViewController)letvc=UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier:"MapsDemoBottomSheetController")as!MapsDemoBottomSheetControllervc.sheetCoordinator= sheetCoordinatorsheetCoordinator.addSheet(vc, to: parentViewController)
ios9.0+, Xcode10+
UBottomSheet is available throughCocoaPods andSwift Package Manager.
Add the following line to your Podfile:
pod'UBottomSheet'
Add this url in XCode > File > Swift Packages > Add Package Dependency:
https://github.com/OfTheWolf/UBottomSheet
TwitterProfile Nested scroll view behaviour of Twitter Profile screen.
uğur,uguboz@gmail.com
UBottomSheet is available under the MIT license. See the LICENSE file for more info.
About
iPhone Maps App bottom sheet - A Protocol Oriented Approach