Latest 1.1.0
License MIT
Platforms ios 8.0, requires ARC

SubscriptionPrompt is a UIViewController with a carousel at the top and a number of rows at the bottom. Written in Swift, works for Objective-C as well.

SubscriptionPrompt screenshot



You can use CocoaPods to install SubscriptionPrompt by adding it to your Podfile:

platform :ios, '8.0'
pod 'SubscriptionPrompt'


Download and drop /SubscriptionPromptfolder in your project.


Just initialize the SubscriptionViewontroller with the following constructor,
you can omit some parameters since they have default values:

init(title: String? = nil, slides: [Slide], options: [Option],
    cancelMessage: String? = nil, restoreButtonTitle: String? = nil)

and present it.

Slide and Option are structs, use the following inits to create them:

init(image: UIImage?, title: String?, subtitle: String?)
init(title: String?, checked: Bool = false)

To get the index of tapped rows, implement the SubscriptionViewControllerDelegate.

override func viewDidLoad() {
      subscriptionViewController.delegate = self

func subscriptionViewControllerRowTapped(atIndex index: Int) {
    print("tapped index: (index)")

animateDraggingToTheRight(duration:) – animates a little drag to the right and back with the given duration
[ux hint for the user that the carousel is draggable]

Styles customization

Set stylingDelegate: SubscriptionViewControllerStylingDelegate to customize styles.
There are three optional methods:

optional func subscriptionViewControllerSlideStyle(atIndex index: Int) -> SlideStyle
optional func subscriptionViewControllerOptionStyle(atIndex index: Int) -> OptionStyle
optional func subscriptionViewControllerNotNowButtonStyle() -> OptionStyle

The methods return OptionStyle and SlideStyle. They represent the looks of the subscription options at the bottom and of the slides at the top.

Use the following init for OptionStyle:

init(backgroundColor: UIColor? = nil, textFont: UIFont? = nil,
    textColor: UIColor? = nil, accessoryType: UITableViewCellAccessoryType? = nil)

and for SlideStyle:

init(backgroundColor: UIColor? = nil, titleFont: UIFont? = nil,
    subtitleFont: UIFont? = nil, titleColor: UIColor? = nil, 
    subtitleColor: UIColor? = nil)

The title is customizable via the titleFont and titleColor properties.
You can also change the background dim color using the dimColor: UIColor and dimView: UIView properties.


  1. Bug fixes.
  2. Add closure-based delegation API. Example:
subscriptionVC.rowTapped { idx in
    print("tapped index: (idx)")

Latest podspec

    "name": "SubscriptionPrompt",
    "version": "1.1.0",
    "summary": "Subscription View Controller like the Tinder uses.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "Binur Konarbai": "[email protected]"
    "social_media_url": "",
    "platforms": {
        "ios": "8.0"
    "requires_arc": true,
    "source": {
        "git": "",
        "tag": "1.1.0",
        "submodules": true
    "source_files": "SubscriptionPrompt/**/*.{h,swift}",
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This