SOPullUpView library for iOS, with pull up gesture.




SOPullUpView is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'SOPullUpView'

Basic usage

  1. Add pod 'SOPullUpView' to your Podfile.

  2. The main part of the library SOPullUpView. It defines an instance of SOPullUpControl where a MainViewController, called the SOPullUpView , can be dragged up and down, hiding or revealing the content.
    As an example, defines SOPullUpControl and assign the datasource and init the view to be the PullUpViewController

      let pullUpController = SOPullUpControl()
      override func viewDidLoad() {
          pullUpController.dataSource = self
          pullUpController.setupCard(from: view)
  3. Make sure the main view controller that will adopt SOPullUpViewDataSource

    • pullUpViewStartViewHeight ...startViewHeightForBottomViewController...

      As an example, the StartViewHeight is determined by the following delegate callback:

         func pullUpViewStartViewHeight() -> CGFloat {
             return  100.0
    • pullUpViewController ...UIViewController as child of your main controller...

        func pullUpViewController() -> UIViewController {
           guard let vc = UIStoryboard(name: StoryBoardName, bundle: nil).instantiateInitialViewController() as? YourPullUpView else {return UIViewController()}
           vc.pullUpControl = self.pullUpController
           return vc
    • pullUpViewEndViewHeight ...maximumHeightForBottomViewController... (Optional method)

  4. In the PullUpViewController defines an instance from SOPullUpControl to be initialized from the ParentViewContrroler

     var pullUpControl: SOPullUpControl? {
         didSet {
             pullUpControl?.delegate = self
  5. finally just adopt the SOPullUpViewDelegate in the pullUpViewController

    • pullUpViewStatus ...will trigger the status of the pull Up View when it's collapsed and expanded...

         func pullUpViewStatus(didChangeTo status: PullUpStatus) {
             switch status {
               case .collapsed:
               case .expanded:
    • pullUpHandleArea ... return the view that will handle the action of the user when click on it, will collapse and expand the pullUpViewController....

        func pullUpHandleArea() -> UIView {
            return handleArea


To run the example project, clone the repo, and run pod install from the Example directory first.


Ahmadalsofi, [email protected]


Brian Advent