Skip to content

aaronn/ANBlurredTableView

Repository files navigation

ANBlurredTableView

ANBlurredTableView is a simple UITableView subclass for blurring and tinting a background image on scroll.

Supports:

  • Blur-out on scroll down, blur-in on scroll up.
  • Custom tint color.
  • Animating between two different alphas (as seen in gif).
  • Variable lengths for scrolling.

Example Image

Follow me on Twitter at @aaronykng for more cocoa classes, apps and more!

Installation

Manual Installation

Add QuartzCore.framework and Accelerate.framework to your project. Drag the following files into your project:

ANBlurredTableView.h
ANBlurredTableView.m
UIImage+BoxBlur.h
UIImage+BoxBlur.m

Usage

Tweak the following properties to customize your ANBlurredTableView.

// Our tint color. If one isn't specified, it'll default to clear. We call this blurTintColor to avoid collisions with iOS's own tintColor.
@property (strong) UIColor *blurTintColor;

// Animates the tint opacity from the startOpacity to endOpacity.
@property (assign) BOOL animateTintAlpha;

// The opacity to start animating at. Only is used if animateOpacity is True.
@property (assign) CGFloat startTintAlpha;

//The opacity to end animating at. Only used if animateOpacity is True
@property (assign) CGFloat endTintAlpha;

// A CGFloat of how many seconds total it should take to animate our blur in, if animateOnLoad is YES.
@property (assign) CGFloat animationDuration;

// Our default number of frames. Make larger with a higher rounding value to make the scroll last longer.
 // Defaults to 20.
@property (assign) NSInteger framesCount;

 //Our default rounding value. Make larger to make the scroll last longer. Needs an adequate # of frames.
 //Defaults to 8.0 (Magic number!)
@property (assign) CGFloat roundingValue;

//Our default compression quality. Set to higher if it's negatively impacting your background quality.
@property (assign) CGFloat compressionQuality;

Check out the header files for a more detailed look at each property.

After setting each property, simply set the background image:

[_tableView setBackgroundImage:[UIImage imageNamed:@"beach.jpg"];

ANBlurredTableView will take care of the rest in the background once the image has been set.

On slower devices, ANBlurredTableView will blur-in once everything is finished rendering.

Demo

The demo shows an ANBlurredTableView that blurs-in and out from a dark grey with an alpha of 0.35 to an alpha of 0.75 as you scroll down. If you're on a slower device, you may see the blur animate-in to your current contentOffset when rendering completes.

Consider setting animateTintAlpha to NO, or changing the blurTintColor to test out various features in ANBlurredTableView.

To Do

  • Cocoapods
  • Considering a method for changing the background image after one has already loaded. Should pre-render in the background before swapping out.
  • Shrink the gif to <4MB.

Credits

The image box blur algorithm is from IndieAmbitions Blog. UIImage category is modified from ios-relatimeblur.

Follow me on Twitter at @aaronykng.

License

Do whatever you’d like. I’d really appreciate it if you mentioned me and link back if you use this in a project though!

About

Animated blur and tint background on UITableView scroll.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published