Swiftpack.co - Package - jessesquires/PresenterKit
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.

PresenterKit Actions Status

Custom presenters and better view controller presentation for iOS




pod 'PresenterKit', '~> 6.1.0'

# develop branch
pod 'PresenterKit', :git => 'https://github.com/jessesquires/PresenterKit.git', :branch => 'develop'

Swift Package Manager

Add PresenterKit to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/jessesquires/PresenterKit.git", from: "6.1.0")

Alternatively, you can add the package directly via Xcode.


You can read the documentation here. Generated with jazzy. Hosted by GitHub Pages.


Interested in making contributions to this project? Please review the guides below.

Also, consider sponsoring this project or buying my apps! ✌️


Created and maintained by @jesse_squires.


Released under the MIT License. See LICENSE for details.

Copyright © 2016-present Jesse Squires.


Stars: 509


6.1.1 - 2020-09-25T20:26:23

This release closes the 6.1.1 milestone.

  • Upgraded to Xcode 12 and Swift 5.3

6.1.0 - 2020-04-18T20:13:29

This release closes the 6.1.0 milestone.


  • Added a new custom presentation controller, HalfModalPresentationController
  • Support for Swift Package Manager


  • Upgrade to Swift 5.2
  • Update to Xcode 11.4
  • Upgrade SwiftLint
  • Switch to GH Actions

6.0.0 - 2019-09-21T19:27:15

This release closes the 6.0.0 milestone.


  • iOS 11 minimum deployment target (Dropped iOS 10)
  • Renamed present() function to presentController() to avoid ambiguous naming with UIKit


  • Swift 5.1
  • Xcode 11
  • Upgrade Swiftlint to 0.35.0, add new rules
  • Update Travis CI

5.1.0 - 2018-11-09T16:02:26

This release closes the 5.1.0 milestone.

  • Upgrade to Swift 4.2
  • Xcode 10.1
  • Upgrade Swiftlint to 0.27.0

5.0.0 - 2018-07-09T01:37:18

This release closes the 5.0.0 milestone.


  • Swift 4.1
  • iOS 10 minimum deployment target (Dropped iOS 9)
  • Xcode 9.4
  • Upgrade Swiftlint to 0.26.0
  • Renamed dismiss() function to dismissController() to avoid ambiguous naming with UIKit (#41)


  • Respect transition context .isCancelled when pushing on a navigation stack (#38)


  • Add new pop() method extension on UINavigationController that accepts a completion parameter. Similar to existing push() method (#40)

  • Added completion parameter to dismiss() method extension on UIViewController (#41)

4.0.0 - 2017-09-23T23:50:30

This release closes the 4.0.0 milestone.

Breaking changes

  • Converted to Swift 4

  • iOS 9 minimum deployment target

  • public struct PopoverConfig was changed to accommodate custom frame so it can be used as anchor for the popover. (#27, #26, @psartzetakis)

    • PopoverConfig.Source.view(_) was changed to PopoverConfig.Source.view(container: frame:)
  • public struct DismissButtonConfig was changed to accommodate custom images in bar button items. (#24, #22, @psartzetakis)

    • DismissButtonConfig.text was renamed to DismissButtonConfig.content
    • public enum DismissButtonConfig.Text was renamed to public enum DismissButtonConfig.Content and it now has 3 cases: .systemItem, .text, .image
    • DismissButtonConfig.init(location: style: text:) was renamed to DismissButtonConfig.init(location: style: content:)

3.0.0 - 2016-09-30T12:36:05

This release closes the 3.0.0 milestone.

Swift 3.0 now required.


  • presentViewController(_:, type:, animated:) was renamed to present(_:, type:, animated:)


  • Added a .none case to PresentationType which uses UIKit defaults. Use this when presenting system controllers like UIAlertController.

Bug fixes

  • Fixed bug in withStyles() where modal presentation/transition styles might not be applied correctly (#24).

2.0.0 - 2016-09-21T10:30:27

This release closes the 2.0.0 milestone.

Swift 2.3 now required.

1.0.0 - 2016-04-08T06:17:54

Initial release :tada: