Difference between revisions of "UIBackdropView"

From iPhone Development Wiki
Jump to: navigation, search
(Added more info.)
(More.)
Line 3: Line 3:
 
It uses a [[CABackdropLayer]] with a [[CAFilter#gaussianBlur|gaussianBlur CAFilter]].<ref>https://twitter.com/conradev/status/380905728393117696</ref>
 
It uses a [[CABackdropLayer]] with a [[CAFilter#gaussianBlur|gaussianBlur CAFilter]].<ref>https://twitter.com/conradev/status/380905728393117696</ref>
  
To create the _UIBackdropView, you need to create its settings first. Here's all settings class available in iOS 7.0
+
_UIBackdropView uses the settings for its setup. Here's all settings class available in iOS 7.0
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 52: Line 52:
 
|}
 
|}
  
There are 2 ways to create the settings object
+
There are many ways to create the settings object
  
 
<source lang="objc">
 
<source lang="objc">
Line 58: Line 58:
 
_UIBackdropViewSettings *settings = (_UIBackdropViewSettings *)[[[_UIBackdropViewSettingsSemiLight alloc] init] autorelease];
 
_UIBackdropViewSettings *settings = (_UIBackdropViewSettings *)[[[_UIBackdropViewSettingsSemiLight alloc] init] autorelease];
  
// or
+
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070];
 +
 
 +
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForPrivateStyle:2070];
  
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070];
+
_UIBackdropViewSettings *settings = [[[_UIBackdropViewSettings alloc] initWithDefaultsValue] autorelease];
  
 
</source>
 
</source>
Line 68: Line 70:
 
<source lang="objc">
 
<source lang="objc">
  
 +
// Creating blur view using settings object
 
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2060];
 
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2060];
 +
 +
// initialization of the blur view
 
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithFrame:CGRectZero
 
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithFrame:CGRectZero
 
                                               autosizesToFitSuperview:YES settings:settings];
 
                                               autosizesToFitSuperview:YES settings:settings];
 +
// another way for initialization
 +
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithSettings:settings];
 +
 +
// or without settings object implementation
 +
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithStyle:2060];
 +
 
[someView addSubview:backView];
 
[someView addSubview:backView];
 
[blurView release];
 
[blurView release];
Line 99: Line 110:
  
 
</source>
 
</source>
 +
 +
== Applying blur settings ==
 +
You can config the settings parameter then apply and update the blur view.
 +
<source lang="objc">
 +
 +
_UIBackdropViewSettings *newSettings = [_UIBackdropView settingsForPrivateStyle:0];
 +
 +
// Whatever configuration for the settings
 +
 +
[blurView applySettings:newSettings];
 +
// or
 +
[blueView computeAndApplySettings:newSettings];
 +
 +
</source>
 +
 +
== Getting all _UIBackdropView objects at runtime ==
 +
Just using this method:
 +
+ (NSArray *)allBackdropViews;
  
 
== References ==
 
== References ==

Revision as of 02:21, 18 May 2014

_UIBackdropView is a private class in UIKit.framework (iOS 7.0+), a subclass of UIView, which is used for the popular blur effects.

It uses a CABackdropLayer with a gaussianBlur CAFilter.[1]

_UIBackdropView uses the settings for its setup. Here's all settings class available in iOS 7.0

Class name Style number Comments/Used by
_UIBackdropViewSettingsBlur 0 Common blurring
_UIBackdropViewSettingsUltraLight 2010 Some alert views in Settings app & many white UIs
_UIBackdropViewSettingsLight 2020
_UIBackdropViewSettingsDark 2030 iOS 7 Notification Center (?)
_UIBackdropViewSettingsDarkLow 2039
_UIBackdropViewSettingsColored 2040
_UIBackdropViewSettingsUltraDark 2050
_UIBackdropViewSettingsAdaptiveLight 2060 iOS 7 Control Center
_UIBackdropViewSettingsSemiLight 2070
_UIBackdropViewSettingsUltraColored 2080

There are many ways to create the settings object

_UIBackdropViewSettings *settings = (_UIBackdropViewSettings *)[[[_UIBackdropViewSettingsSemiLight alloc] init] autorelease];

_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070];

_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForPrivateStyle:2070];

_UIBackdropViewSettings *settings = [[[_UIBackdropViewSettings alloc] initWithDefaultsValue] autorelease];

Creating _UIBackdropView (Blur view) object

// Creating blur view using settings object
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2060];

// initialization of the blur view
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithFrame:CGRectZero
                                              autosizesToFitSuperview:YES settings:settings];
// another way for initialization
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithSettings:settings];

// or without settings object implementation
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithStyle:2060];

[someView addSubview:backView];
[blurView release];

Blur Quality

There are only two qualities available.

  • low
  • default (Assumed to be "medium")

You can set it like this:

[blurView setBlurQuality:@"low"];

Tinting blur view

[blurView setRequiresColorStatistics:YES];
[blurView setColorTint:[UIColor cyanColor]];
[blurView setColorTintAlpha:0.8];
[blurView setColorTintMaskAlpha:0.7];

Applying blur settings

You can config the settings parameter then apply and update the blur view.

_UIBackdropViewSettings *newSettings = [_UIBackdropView settingsForPrivateStyle:0];

// Whatever configuration for the settings

[blurView applySettings:newSettings];
// or
[blueView computeAndApplySettings:newSettings];

Getting all _UIBackdropView objects at runtime

Just using this method:

+ (NSArray *)allBackdropViews;

References