Latest 2.0.1
License MIT
Platforms ios 9.0


Preview-transition Twitter

Carthage compatible
codebeat badge


This project is maintained by Ramotion, an agency specialized in building dedicated engineering teams and developing custom software.

Contact our team and we’ll help you work with the best engineers from Eastern Europe.

StackViewController Example App

The iPhone mockup available here.


  • iOS 9.0+
  • Xcode 8


Preview-transition is released under the MIT license.
See LICENSE for details.


Just add the Source folder to your project or use CocoaPods like this:

pod "PreviewTransition", "~> 2.0.1" swift 3

pod "PreviewTransition", "~> 1.1.5" swift 2

or Carthage users can simply add to their Cartfile:

github "Ramotion/preview-transition"


1) import PreviewTransition

2) Create UITableViewController inherit, inheriting from PTTableViewController

3) Add UITableViewDelegate methods

public override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return <RowsCount>

public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    return tableView.dequeueReusableCellWithIdentifier(<CellIdentifier>, forIndexPath: indexPath)

4) add a ParallaxCell

create a cell and inherit from ParallaxCell; don’t forget set the identifier <CellIdentifier>

or programmatically:
register a cell in viewDidLoad tableView.registerClass(ParallaxCell, forCellReuseIdentifier:<CellIdentifier>)

5) set cell height

6) create image names (image sizes must be equal to screen size or bigger)

let images = [image_name, image_name, image_name, image_name, image_name] // image names

7) set image and text for ParallaxCell

public override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    guard let cell = cell as? ParallaxCell else {

    let imageName = images[indexPath.row]

    if let image = UIImage(named: imageName) {
      cell.setImage(image, title: <SetText>)

your tableViewController should look like DemoTableViewController

Method public override func tableView(tableView: didSelectRowAtIndexPath indexPath:) we will add later. (step 10)

8) Create UIViewController, inheriting from PTDetailViewController

9) Add action for backButton and call popViewController()

func backButtonHandler() {

10) Push this UIViewController in UITableViewController. Add method

public override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

  // create viewController
  let <YourViewController> = storyboard?.instantiateViewControllerWithIdentifier(<identifier>)
  if case let viewController as <YourViewController> = viewController {

11) Configure UINavigationBar

// transparent background
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().translucent = true
UINavigationBar.appearance().tintColor = .whiteColor()

// set font
if let font = UIFont(name: <Font name> , size: 18) {
      UINavigationBar.appearance().titleTextAttributes = [
        NSForegroundColorAttributeName : UIColor.whiteColor(),
        NSFontAttributeName : font

Follow us

Twitter URL
Twitter Follow

Latest podspec

    "name": "PreviewTransition",
    "version": "2.0.1",
    "summary": "Transition animation",
    "license": "MIT",
    "homepage": "",
    "authors": {
        "Juri Vasylenko": "[email protected]"
    "platforms": {
        "ios": "9.0"
    "source": {
        "git": "",
        "tag": "2.0.1"
    "source_files": "PreviewTransition/**/*.swift"

Pin It on Pinterest

Share This