• Stars
    star
    302
  • Rank 138,030 (Top 3 %)
  • Language
    Objective-C
  • Created over 10 years ago
  • Updated over 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Animated blur and tint background on UITableView scroll.

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!