From 5487e0fdea8a5176a8169baf6d6f688298bad29a Mon Sep 17 00:00:00 2001 From: Sebastian Trebunak Date: Sat, 18 Jan 2020 09:47:17 +0100 Subject: [PATCH] Add iOS 13 blurs --- index.d.ts | 16 ++++++++++++++++ ios/BlurView.m | 23 ++++++++++++++++++++++- src/BlurView.ios.js | 15 +++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 50c8041..8ea3405 100644 --- a/index.d.ts +++ b/index.d.ts @@ -6,6 +6,22 @@ export interface BlurViewProperties { | "xlight" | "light" | "dark" + // iOS 13+ only + | "chromeMaterial" + | "material" + | "thickMaterial" + | "thinMaterial" + | "ultraThinMaterial" + | "chromeMaterialDark" + | "materialDark" + | "thickMaterialDark" + | "thinMaterialDark" + | "ultraThinMaterialDark" + | "chromeMaterialLight" + | "materialLight" + | "thickMaterialLight" + | "thinMaterialLight" + | "ultraThinMaterialLight" // tvOS and iOS 10+ only | "regular" | "prominent" diff --git a/ios/BlurView.m b/ios/BlurView.m index f052b78..e6e523b 100644 --- a/ios/BlurView.m +++ b/ios/BlurView.m @@ -58,7 +58,28 @@ if ([self.blurType isEqual: @"regular"]) return UIBlurEffectStyleRegular; if ([self.blurType isEqual: @"prominent"]) return UIBlurEffectStyleProminent; #endif - + + #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* __IPHONE_10_0 */ + // Adaptable blur styles + if ([self.blurType isEqual: @"chromeMaterial"]) return UIBlurEffectStyleSystemUltraThinMaterial; + if ([self.blurType isEqual: @"material"]) return UIBlurEffectStyleSystemMaterial; + if ([self.blurType isEqual: @"thickMaterial"]) return UIBlurEffectStyleSystemThickMaterial; + if ([self.blurType isEqual: @"thinMaterial"]) return UIBlurEffectStyleSystemUltraThinMaterial; + if ([self.blurType isEqual: @"ultraThinMaterial"]) return UIBlurEffectStyleSystemUltraThinMaterial; + // dark blur styles + if ([self.blurType isEqual: @"chromeMaterialDark"]) return UIBlurEffectStyleSystemChromeMaterialDark; + if ([self.blurType isEqual: @"materialDark"]) return UIBlurEffectStyleSystemMaterialDark; + if ([self.blurType isEqual: @"thickMaterialDark"]) return UIBlurEffectStyleSystemThickMaterialDark; + if ([self.blurType isEqual: @"thinMaterialDark"]) return UIBlurEffectStyleSystemUltraThinMaterialDark; + if ([self.blurType isEqual: @"ultraThinMaterialDark"]) return UIBlurEffectStyleSystemUltraThinMaterialDark; + // light blur styles + if ([self.blurType isEqual: @"chromeMaterialLight"]) return UIBlurEffectStyleSystemChromeMaterialLight; + if ([self.blurType isEqual: @"materialLight"]) return UIBlurEffectStyleSystemMaterialLight; + if ([self.blurType isEqual: @"thickMaterialLight"]) return UIBlurEffectStyleSystemThickMaterialLight; + if ([self.blurType isEqual: @"thinMaterialLight"]) return UIBlurEffectStyleSystemUltraThinMaterialLight; + if ([self.blurType isEqual: @"ultraThinMaterialLight"]) return UIBlurEffectStyleSystemUltraThinMaterialLight; + #endif + #if TARGET_OS_TV if ([self.blurType isEqual: @"regular"]) return UIBlurEffectStyleRegular; if ([self.blurType isEqual: @"prominent"]) return UIBlurEffectStyleProminent; diff --git a/src/BlurView.ios.js b/src/BlurView.ios.js index df34bfb..f675bf9 100644 --- a/src/BlurView.ios.js +++ b/src/BlurView.ios.js @@ -33,6 +33,21 @@ BlurView.propTypes = { 'prominent', 'regular', 'extraDark', + 'chromeMaterial', + 'material', + 'thickMaterial', + 'thinMaterial', + 'ultraThinMaterial', + 'chromeMaterialDark', + 'materialDark', + 'thickMaterialDark', + 'thinMaterialDark', + 'ultraThinMaterialDark', + 'chromeMaterialLight', + 'materialLight', + 'thickMaterialLight', + 'thinMaterialLight', + 'ultraThinMaterialLight', ]), blurAmount: PropTypes.number, };