Category that makes it super easy to add a parallax effect to your UIScrollView/UITableView
Clone or download
Amnell Merge pull request #22 from RomainBoulay/ConfigurableShadow
Choose if shadow is displayed when using a UIView.
Latest commit fe02f4e Dec 22, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
APParallaxHeader Merge pull request #22 from RomainBoulay/ConfigurableShadow Dec 22, 2015
Demo Fix warning Nov 5, 2014
.gitignore Added gitignore Apr 12, 2013
APParallaxHeader.podspec Updated podspec and readme Jul 19, 2014
LICENSE.txt Initial commit Apr 12, 2013 Updated podspec and readme Jul 19, 2014


This category makes it super easy to add a parallax header view to your scroll views. Other alternatives relies on subclassing of UIScrollView, UITableViewController or UITableView. Instead APParallaxHeader uses the Objective-C runtime to add the two following methods to UIScrollView without the need to do any subclassing.

- (void)addParallaxWithImage:(UIImage *)image andHeight:(CGFloat)height andShadow:(BOOL)shadow;
- (void)addParallaxWithImage:(UIImage *)image andHeight:(CGFloat)height;
- (void)addParallaxWithView:(UIView*)view andHeight:(CGFloat)height;




From CocoaPods

Add pod 'APParallaxHeader' to your Podfile (or pod 'APParallaxHeader', :head if you're feeling adventurous, and want to live on the edge).


Important note if your project doesn't use ARC: you must add the -fobjc-arc compiler flag to UIScrollView+ APParallaxHeader.m in Target Settings > Build Phases > Compile Sources.

  • Drag the APParallaxHeader/APParallaxHeader folder into your project.
  • #import UIScrollView+APParallaxHeader.h wherever you feel the need.


(see sample Xcode project in /Demo)

Adding Parallax image

[tableView addParallaxWithImage:[UIImage imageNamed:@"ImageName"] andHeight:160];

Adding Parallax custom view

Note: When adding a custom view. Either use APParallaxViewDelegate, auto layout constraints or contentMode to resize your custom view during scrolling.

UIView *customView = [[UIView alloc] init];
[customView setFrame:CGRectMake(0, 0, 320, 160)];
[self.tableView addParallaxWithView:customView andHeight:160];

[self.tableView.parallaxView setDelegate:self];


APParallaxViewDelegate will notify the delegate about resizing of the parallax view.


  • - (void)parallaxView:(APParallaxView *)view willChangeFrame:(CGRect)frame
  • - (void)parallaxView:(APParallaxView *)view didChangeFrame:(CGRect)frame


  • Ability to customize the drop shadow size, opacity, color etc.
  • Setting a minimum height
  • Setting contentMode of the imageView

Known issues

  • Section headers for tableviews with style UITableViewStylePlain will not be pinned as expected during scrolling.



  • Re-added/fixed optional shadow implementation


  • Added delegate callbacks for APParallaxView resizes (APParallaxViewDelegate).


  • Ability to inititate with or without an inner shadow.
  • Ability to set a custom view as a parallax view.


  • Added an inner shadow


  • Initial release


APParallaxHeader is brought to you by Mathias Amnell at Apping AB. The code is inspired by Sam Vermette's work with SVPullToRefresh (especially the usage of objc/runtime.h to make it so easy to implement, without the need of subclassing).


APParallaxHeader is available under the MIT license. See the LICENSE file for more info.