(Updated table.) |
(Adjustment.) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 5: | Line 5: | ||
== Creating Settings == | == Creating Settings == | ||
_UIBackdropView uses a _UIBackdropViewSettings object for its setup. There are many ways to create it: | <tt>_UIBackdropView</tt> uses a <tt>_UIBackdropViewSettings</tt> object for its setup. There are many ways to create it: | ||
<source lang="objc"> | <source lang="objc"> | ||
Line 13: | Line 13: | ||
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070]; | _UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070]; | ||
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForPrivateStyle:2070]; //this | _UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForPrivateStyle:2070]; // this calls settingsForStyle internally | ||
_UIBackdropViewSettings *settings = [[[_UIBackdropViewSettings alloc] initWithDefaultsValue] autorelease]; | _UIBackdropViewSettings *settings = [[[_UIBackdropViewSettings alloc] initWithDefaultsValue] autorelease]; | ||
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:100] ; // | _UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:100] ; // specify graphics quality, usually 10 (minimum quality) or 100 (maximum quality) | ||
</source> | </source> | ||
Line 23: | Line 23: | ||
== Available settings classes (styles) == | == Available settings classes (styles) == | ||
Here's a list with known settings classes (subclasses of _UIBackdropViewSettings) available. | Here's a list with known settings classes (subclasses of <tt>_UIBackdropViewSettings</tt>) available. | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Class !! Styles !! Applications !! Comments | ||
! | |||
! | |||
! | |||
! | |||
! | |||
|- | |- | ||
| _UIBackdropViewSettingsCombiner | | _UIBackdropViewSettingsCombiner | ||
| | | 3 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsNone | | _UIBackdropViewSettingsNone | ||
| -2 | |||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsLight | | _UIBackdropViewSettingsLight | ||
| 0, 1000, 1003, 2020, 10090, 10100 | |||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsDark | | _UIBackdropViewSettingsDark | ||
| | | 0, 1001, 1100, 2030, 11050, 11060 | ||
| Notification Center | | | ||
* Notification Center | |||
* Keyboard (Dark) | |||
* Safari Navigation Bar (Private mode) | |||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsBlur | | _UIBackdropViewSettingsBlur | ||
| 2 | |||
| Common blurring | | Common blurring | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsColorSample | | _UIBackdropViewSettingsColorSample | ||
| | | 2000 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsUltraLight | | _UIBackdropViewSettingsUltraLight | ||
| | | (iOS 7) 2010 | ||
(iOS 8) 2010, 10050, 10060, 10070, 10080, 10110 | |||
| Alert views and various UI (White) | | Alert views and various UI (White) | ||
| Fallback of unsupported styles | |||
|- | |- | ||
| _UIBackdropViewSettingsLightLow | | _UIBackdropViewSettingsLightLow | ||
| | | 2029 | ||
| | | | ||
| Optimized version of _UIBackdropViewSettingsLight | |||
|- | |- | ||
| _UIBackdropViewSettingsDarkWithZoom | | _UIBackdropViewSettingsDarkWithZoom | ||
| | | 2031 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsDarkLow | | _UIBackdropViewSettingsDarkLow | ||
| | | 2039 | ||
| | | | ||
| Optimized version of _UIBackdropViewSettingsDark | |||
|- | |- | ||
| rowspan=" | | rowspan="10" | _UIBackdropViewSettingsColored | ||
| | | 2040 | ||
| | |||
| Tint: rgba(0.0196078, 0.0196078, 0.0196078, 1) | | Tint: rgba(0.0196078, 0.0196078, 0.0196078, 1) | ||
|- | |- | ||
| rowspan=" | | rowspan="3" | 10091 | ||
| rowspan="3" | | |||
| Tint (iOS 7): rgba(0.160784, 1, 0.301961, 1) | | Tint (iOS 7): rgba(0.160784, 1, 0.301961, 1) | ||
|- | |- | ||
| Tint (iOS 8): rgba(0.160784, 1, 0, 1) | | Tint (iOS 8): rgba(0.160784, 1, 0, 1) | ||
|- | |- | ||
| rowspan=" | | Tint (iOS 9+): rgba(0.160784, 1, 0.301961, 1) | ||
|- | |||
| rowspan="3" | 10092 | |||
| rowspan="3" | | |||
| Tint (iOS 7): rgba(1, 0.0980392, 0.0470588, 1) | | Tint (iOS 7): rgba(1, 0.0980392, 0.0470588, 1) | ||
|- | |- | ||
| Tint (iOS 8): rgba(1, 0.098039, 0.047059, 1) | | Tint (iOS 8): rgba(1, 0.098039, 0.047059, 1) | ||
|- | |- | ||
| rowspan=" | | Tint (iOS 9+): rgba(1, 0.0980392, 0.0470588, 1) | ||
|- | |||
| rowspan="3" | 10120 | |||
| rowspan="3" | | |||
| Tint (iOS 7): rgba(0.0313725, 0.262745, 0.560784, 1) | | Tint (iOS 7): rgba(0.0313725, 0.262745, 0.560784, 1) | ||
|- | |- | ||
| Tint (iOS 8): rgba(0.031373, 0.262745, 0.560784, 1) | | Tint (iOS 8): rgba(0.031373, 0.262745, 0.560784, 1) | ||
|- | |||
| Tint (iOS 9+): rgba(0.0313725, 0.262745, 0.560784, 1) | |||
|- | |- | ||
| _UIBackdropViewSettingsUltraDark | | _UIBackdropViewSettingsUltraDark | ||
| 2050, 11070 | |||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsAdaptiveLight | | _UIBackdropViewSettingsAdaptiveLight | ||
| 2060 | |||
| Control Center | | Control Center | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsSemiLight | | _UIBackdropViewSettingsSemiLight | ||
| | | 2070 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsFlatSemiLight | | _UIBackdropViewSettingsFlatSemiLight | ||
| | | 2071 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsUltraColored | | _UIBackdropViewSettingsUltraColored | ||
| | | 2080 | ||
| | | | ||
| | |||
|- | |- | ||
| _UIBackdropViewSettingsPasscodePaddle | | _UIBackdropViewSettingsPasscodePaddle | ||
| | | 3900 | ||
| | | | ||
| | | iOS 7.1+ | ||
|- | |- | ||
| _UIBackdropViewSettingsLightKeyboard | | _UIBackdropViewSettingsLightKeyboard | ||
| - | | 3901 | ||
| | | | ||
| | | iOS 7.1+ | ||
|- | |||
| _UIBackdropViewSettingsLightEmojiKeyboard | |||
| 3902 | |||
| | |||
| iOS 8.3+ | |||
|- | |||
| _UIBackdropViewSettingsATVSemiLight | |||
| 4000 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVMediumLight | |||
| 4001 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVLight | |||
| 4002 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVUltraLight | |||
| 4003 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVMenuLight | |||
| 4004 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVSemiDark | |||
| 4005 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVMediumDark | |||
| 4006 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVDark | |||
| 4007 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVUltraDark | |||
| 4008 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVMenuDark | |||
| 4009 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVAdaptive | |||
| 4010 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVAdaptiveLighten | |||
| 4011 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVAccessoryLighten | |||
| 4012 | |||
| | |||
| iOS 9.0+ | |||
|- | |||
| _UIBackdropViewSettingsATVAccessoryDark | |||
| 4013 | |||
| | |||
| iOS 9.3+ | |||
|} | |} | ||
Line 141: | Line 238: | ||
_UIBackdropView *blurView = [[_UIBackdropView alloc] initWithStyle:2060]; | _UIBackdropView *blurView = [[_UIBackdropView alloc] initWithStyle:2060]; | ||
[someView addSubview: | [someView addSubview:blurView]; | ||
[blurView release]; | [blurView release]; | ||
</source> | </source> | ||
== | == Overriding _UIBackdropViewSettingsColored == | ||
You can give it a tint color (in fact, it already has a default tint color, and some styles (10091, 10092, 10120) set their own). Example: | You can give it a tint color (in fact, it already has a default tint color, and some styles (10091, 10092, 10120) set their own). Example: | ||
<source lang="objc"> | <source lang="objc"> | ||
_UIBackdropViewSettings *settings = [ | |||
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2040]; | |||
settings.colorTint = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]; | |||
</source> | </source> | ||
== Blurring Sample == | == Blurring Sample == | ||
There are | There are two blur qualities available. | ||
* low | * low | ||
Line 167: | Line 265: | ||
<source lang="objc"> | <source lang="objc"> | ||
blurView.blurRadiusSetOnce = NO; | |||
blurView.blurRadius = 10.0; | |||
blurView.blurHardEdges = 3; | |||
blurView.blurWithHardEdges = YES; | |||
blurView.blurQuality = @"low"; | |||
</source> | </source> | ||
Line 178: | Line 276: | ||
<source lang="objc"> | <source lang="objc"> | ||
blurView.requiresColorStatistics = YES; | |||
blurView.usesColorTintView = YES; | |||
UIColor *color = [UIColor cyanColor]; | UIColor *color = [UIColor cyanColor]; | ||
blurView.colorTint = color; // or you may use - (void)transitionToColor:(UIColor *)color; | |||
blurView.colorTintAlpha = 0.8; | |||
blurView.colorTintMaskAlpha = 0.7; | |||
</source> | </source> | ||
== | == Graphics quality == | ||
Some styles require higher graphics quality, determined using <tt>-[UIDevice _graphicsQuality]</tt> and might not be suitable for legacy devices. There are two values: 10 and 100. 100 looks better, but needs more resources. On default, iPad2,6, iPad2,7, iPad3,4, iPad3,5, iPad3,6, iPhone4,1, iPhone5,1, iPhone5,2, iPod5,1 get 10, the other devices get 100 (as of iOS 8.1). To manually set a graphic quality to a style, use | |||
<source lang="objc"> | <source lang="objc"> | ||
[_UIBackdropViewSettings | [_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:100]; // request style 2030 at highest graphics quality (100) | ||
[_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:10]; // request style 2030 at lower graphics quality (10) | |||
</source> | </source> | ||
== Applying blur settings/style == | == Applying blur settings/style == | ||
There are several ways for doing this by methods. | There are several ways for doing this by methods. | ||
{{Function signature|signature=- (void)transitionIncrementallyToPrivateStyle:(NSInteger)style weighting:( | {{Function signature|signature=- (void)transitionIncrementallyToPrivateStyle:(NSInteger)style weighting:(CGFloat)weight;|firmware=7.0 –}} | ||
{{Function signature|signature=- (void)transitionIncrementallyToStyle:(NSInteger)style weighting:( | {{Function signature|signature=- (void)transitionIncrementallyToStyle:(NSInteger)style weighting:(CGFloat)weight;|firmware=7.0 –}} | ||
{{Function signature|signature=- (void)transitionToSettings:(_UIBackdropViewSettings *)settings;|firmware=7.0 –}} | {{Function signature|signature=- (void)transitionToSettings:(_UIBackdropViewSettings *)settings;|firmware=7.0 –}} | ||
{{Function signature|signature=- (void)transitionToPrivateStyle:(NSInteger)style;|firmware=7.0 –}} | {{Function signature|signature=- (void)transitionToPrivateStyle:(NSInteger)style;|firmware=7.0 –}} | ||
{{Function signature|signature=- (void)transitionToStyle:(NSInteger)style;|firmware=7.0 –}} | {{Function signature|signature=- (void)transitionToStyle:(NSInteger)style;|firmware=7.0 –}} | ||
transitionIncrementallyToPrivateStyle and transitionIncrementallyToStyle do the same (transitionIncrementallyToPrivateStyle calls transitionIncrementallyToStyle internally). | <tt>-transitionIncrementallyToPrivateStyle:</tt> and <tt>-transitionIncrementallyToStyle:</tt> do the same (<tt>-transitionIncrementallyToPrivateStyle:</tt> calls <tt>-transitionIncrementallyToStyle:</tt> internally). | ||
transitionToSettings and transitionToPrivateStyle are equivalent too. | <tt>-transitionToSettings:</tt> and <tt>-transitionToPrivateStyle:</tt> are equivalent too. | ||
For example | For example | ||
Line 216: | Line 313: | ||
// Whatever configuration for the settings | // Whatever configuration for the settings | ||
blurView.inputSettings = newSettings; | |||
</source> | </source> | ||
Line 224: | Line 321: | ||
<source lang="objc"> | <source lang="objc"> | ||
NSArray *blurViews = [_UIBackdropView allBackdropViews]; | NSArray <_UIBackdropView *> *blurViews = [_UIBackdropView allBackdropViews]; | ||
for (_UIBackdropView *view in blurViews) { | for (_UIBackdropView *view in blurViews) { |
Latest revision as of 02:11, 14 August 2017
_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 (kCAFilterGaussianBlur) .[1]
Creating Settings
_UIBackdropView uses a _UIBackdropViewSettings object for its setup. There are many ways to create it:
_UIBackdropViewSettings *settings = (_UIBackdropViewSettings *)[[[_UIBackdropViewSettingsSemiLight alloc] init] autorelease];
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2070];
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForPrivateStyle:2070]; // this calls settingsForStyle internally
_UIBackdropViewSettings *settings = [[[_UIBackdropViewSettings alloc] initWithDefaultsValue] autorelease];
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:100] ; // specify graphics quality, usually 10 (minimum quality) or 100 (maximum quality)
Available settings classes (styles)
Here's a list with known settings classes (subclasses of _UIBackdropViewSettings) available.
Class | Styles | Applications | Comments |
---|---|---|---|
_UIBackdropViewSettingsCombiner | 3 | ||
_UIBackdropViewSettingsNone | -2 | ||
_UIBackdropViewSettingsLight | 0, 1000, 1003, 2020, 10090, 10100 | ||
_UIBackdropViewSettingsDark | 0, 1001, 1100, 2030, 11050, 11060 |
|
|
_UIBackdropViewSettingsBlur | 2 | Common blurring | |
_UIBackdropViewSettingsColorSample | 2000 | ||
_UIBackdropViewSettingsUltraLight | (iOS 7) 2010
(iOS 8) 2010, 10050, 10060, 10070, 10080, 10110 |
Alert views and various UI (White) | Fallback of unsupported styles |
_UIBackdropViewSettingsLightLow | 2029 | Optimized version of _UIBackdropViewSettingsLight | |
_UIBackdropViewSettingsDarkWithZoom | 2031 | ||
_UIBackdropViewSettingsDarkLow | 2039 | Optimized version of _UIBackdropViewSettingsDark | |
_UIBackdropViewSettingsColored | 2040 | Tint: rgba(0.0196078, 0.0196078, 0.0196078, 1) | |
10091 | Tint (iOS 7): rgba(0.160784, 1, 0.301961, 1) | ||
Tint (iOS 8): rgba(0.160784, 1, 0, 1) | |||
Tint (iOS 9+): rgba(0.160784, 1, 0.301961, 1) | |||
10092 | Tint (iOS 7): rgba(1, 0.0980392, 0.0470588, 1) | ||
Tint (iOS 8): rgba(1, 0.098039, 0.047059, 1) | |||
Tint (iOS 9+): rgba(1, 0.0980392, 0.0470588, 1) | |||
10120 | Tint (iOS 7): rgba(0.0313725, 0.262745, 0.560784, 1) | ||
Tint (iOS 8): rgba(0.031373, 0.262745, 0.560784, 1) | |||
Tint (iOS 9+): rgba(0.0313725, 0.262745, 0.560784, 1) | |||
_UIBackdropViewSettingsUltraDark | 2050, 11070 | ||
_UIBackdropViewSettingsAdaptiveLight | 2060 | Control Center | |
_UIBackdropViewSettingsSemiLight | 2070 | ||
_UIBackdropViewSettingsFlatSemiLight | 2071 | ||
_UIBackdropViewSettingsUltraColored | 2080 | ||
_UIBackdropViewSettingsPasscodePaddle | 3900 | iOS 7.1+ | |
_UIBackdropViewSettingsLightKeyboard | 3901 | iOS 7.1+ | |
_UIBackdropViewSettingsLightEmojiKeyboard | 3902 | iOS 8.3+ | |
_UIBackdropViewSettingsATVSemiLight | 4000 | iOS 9.0+ | |
_UIBackdropViewSettingsATVMediumLight | 4001 | iOS 9.0+ | |
_UIBackdropViewSettingsATVLight | 4002 | iOS 9.0+ | |
_UIBackdropViewSettingsATVUltraLight | 4003 | iOS 9.0+ | |
_UIBackdropViewSettingsATVMenuLight | 4004 | iOS 9.0+ | |
_UIBackdropViewSettingsATVSemiDark | 4005 | iOS 9.0+ | |
_UIBackdropViewSettingsATVMediumDark | 4006 | iOS 9.0+ | |
_UIBackdropViewSettingsATVDark | 4007 | iOS 9.0+ | |
_UIBackdropViewSettingsATVUltraDark | 4008 | iOS 9.0+ | |
_UIBackdropViewSettingsATVMenuDark | 4009 | iOS 9.0+ | |
_UIBackdropViewSettingsATVAdaptive | 4010 | iOS 9.0+ | |
_UIBackdropViewSettingsATVAdaptiveLighten | 4011 | iOS 9.0+ | |
_UIBackdropViewSettingsATVAccessoryLighten | 4012 | iOS 9.0+ | |
_UIBackdropViewSettingsATVAccessoryDark | 4013 | iOS 9.3+ |
Creating Sample
// 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:blurView];
[blurView release];
Overriding _UIBackdropViewSettingsColored
You can give it a tint color (in fact, it already has a default tint color, and some styles (10091, 10092, 10120) set their own). Example:
_UIBackdropViewSettings *settings = [_UIBackdropViewSettings settingsForStyle:2040];
settings.colorTint = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
Blurring Sample
There are two blur qualities available.
- low
- default (Assumed to be "medium")
They correspend to the kCAFilterGaussianBlur's property "inputQuality"
blurView.blurRadiusSetOnce = NO;
blurView.blurRadius = 10.0;
blurView.blurHardEdges = 3;
blurView.blurWithHardEdges = YES;
blurView.blurQuality = @"low";
Tinting Sample
blurView.requiresColorStatistics = YES;
blurView.usesColorTintView = YES;
UIColor *color = [UIColor cyanColor];
blurView.colorTint = color; // or you may use - (void)transitionToColor:(UIColor *)color;
blurView.colorTintAlpha = 0.8;
blurView.colorTintMaskAlpha = 0.7;
Graphics quality
Some styles require higher graphics quality, determined using -[UIDevice _graphicsQuality] and might not be suitable for legacy devices. There are two values: 10 and 100. 100 looks better, but needs more resources. On default, iPad2,6, iPad2,7, iPad3,4, iPad3,5, iPad3,6, iPhone4,1, iPhone5,1, iPhone5,2, iPod5,1 get 10, the other devices get 100 (as of iOS 8.1). To manually set a graphic quality to a style, use
[_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:100]; // request style 2030 at highest graphics quality (100)
[_UIBackdropViewSettings settingsForStyle:2030 graphicsQuality:10]; // request style 2030 at lower graphics quality (10)
Applying blur settings/style
There are several ways for doing this by methods.
Signature | - (void)transitionIncrementallyToPrivateStyle:(NSInteger)style weighting:(CGFloat)weight; |
---|---|
Available in | 7.0 – |
Signature | - (void)transitionIncrementallyToStyle:(NSInteger)style weighting:(CGFloat)weight; |
---|---|
Available in | 7.0 – |
Signature | - (void)transitionToSettings:(_UIBackdropViewSettings *)settings; |
---|---|
Available in | 7.0 – |
Signature | - (void)transitionToPrivateStyle:(NSInteger)style; |
---|---|
Available in | 7.0 – |
Signature | - (void)transitionToStyle:(NSInteger)style; |
---|---|
Available in | 7.0 – |
-transitionIncrementallyToPrivateStyle: and -transitionIncrementallyToStyle: do the same (-transitionIncrementallyToPrivateStyle: calls -transitionIncrementallyToStyle: internally). -transitionToSettings: and -transitionToPrivateStyle: are equivalent too.
For example
_UIBackdropViewSettings *newSettings = [_UIBackdropViewSettings settingsForPrivateStyle:0];
// Whatever configuration for the settings
blurView.inputSettings = newSettings;
Getting/Parsing all _UIBackdropView objects at runtime
NSArray <_UIBackdropView *> *blurViews = [_UIBackdropView allBackdropViews];
for (_UIBackdropView *view in blurViews) {
NSLog(@"This _UIBackdropView style is: %d", view.style);
// do any _UIBackdropView configuration here
}
References