[iOS] Add support for dark-theme-box-shadow.
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
index 6dff036..1ac754a 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -61,6 +61,7 @@
WXBoxShadow *_originalBoxShadow;
WXBoxShadow *_lastBoxShadow;
WXBoxShadow *_boxShadow;
+ WXBoxShadow *_darkThemeBoxShadow;
/**
* accessibility support
diff --git a/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m b/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
index 7b513e8..081ae35 100644
--- a/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
+++ b/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
@@ -20,6 +20,7 @@
#import "WXComponent+Display.h"
#import "WXComponent.h"
#import "WXComponent_internal.h"
+#import "WXComponent+BoxShadow.h"
#import "WXLayer.h"
#import "WXAssert.h"
#import "WXUtility.h"
@@ -118,6 +119,19 @@
if (_backgroundImage) {
[self setGradientLayer];
}
+
+ WXBoxShadow* usingBoxShadow = nil;
+ if (_darkThemeBoxShadow && [self.weexInstance isDarkTheme]) {
+ usingBoxShadow = _darkThemeBoxShadow;
+ }
+ else {
+ usingBoxShadow = _boxShadow;
+ }
+
+ if (usingBoxShadow) {
+ _lastBoxShadow = usingBoxShadow;
+ [self configBoxShadow:usingBoxShadow];
+ }
}
}
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
index a56cd64..8a9d18c 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
@@ -135,13 +135,21 @@
strongSelf.layer.transform = CATransform3DIdentity;
}
+ WXBoxShadow* usingBoxShadow = nil;
+ if (strongSelf->_darkThemeBoxShadow && [strongSelf.weexInstance isDarkTheme]) {
+ usingBoxShadow = strongSelf->_darkThemeBoxShadow;
+ }
+ else {
+ usingBoxShadow = strongSelf->_boxShadow;
+ }
+
if (!CGRectEqualToRect(strongSelf.view.frame,strongSelf.calculatedFrame)) {
strongSelf.view.frame = strongSelf.calculatedFrame;
strongSelf->_absolutePosition = CGPointMake(NAN, NAN);
- [strongSelf configBoxShadow:strongSelf->_boxShadow];
+ [strongSelf configBoxShadow:usingBoxShadow];
} else {
- if (![strongSelf equalBoxShadow:strongSelf->_boxShadow withBoxShadow:strongSelf->_lastBoxShadow]) {
- [strongSelf configBoxShadow:strongSelf->_boxShadow];
+ if (![strongSelf equalBoxShadow:usingBoxShadow withBoxShadow:strongSelf->_lastBoxShadow]) {
+ [strongSelf configBoxShadow:usingBoxShadow];
}
}
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXComponent.mm b/ios/sdk/WeexSDK/Sources/Model/WXComponent.mm
index 3b1b116..85dfafe 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.mm
@@ -426,8 +426,17 @@
[self _adjustForRTL];
- if (_boxShadow) {
- [self configBoxShadow:_boxShadow];
+ WXBoxShadow* usingBoxShadow = nil;
+ if (_darkThemeBoxShadow && [self.weexInstance isDarkTheme]) {
+ usingBoxShadow = _darkThemeBoxShadow;
+ }
+ else {
+ usingBoxShadow = _boxShadow;
+ }
+
+ if (usingBoxShadow) {
+ _lastBoxShadow = usingBoxShadow;
+ [self configBoxShadow:usingBoxShadow];
}
_view.wx_component = self;
diff --git a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.mm b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.mm
index accb21a..a5a3265 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.mm
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.mm
@@ -196,8 +196,8 @@
[[WXTransform alloc] initWithCSSValue:[WXConvert NSString:styles[@"transform"]] origin:[WXConvert NSString:styles[@"transformOrigin"]] instance:self.weexInstance] :
[[WXTransform alloc] initWithCSSValue:nil origin:nil instance:self.weexInstance];
_boxShadow = styles[@"boxShadow"]?[WXConvert WXBoxShadow:styles[@"boxShadow"] scaleFactor:self.weexInstance.pixelScaleFactor]:nil;
- if (_boxShadow) {
- _lastBoxShadow = _boxShadow;
+ if (styles[@"darkThemeBoxShadow"]) {
+ _darkThemeBoxShadow = [WXConvert WXBoxShadow:styles[@"darkThemeBoxShadow"] scaleFactor:self.weexInstance.pixelScaleFactor];
}
}
@@ -219,9 +219,24 @@
{
WX_CHECK_COMPONENT_TYPE(self.componentType)
if (styles[@"boxShadow"]) {
- _lastBoxShadow = _boxShadow;
_boxShadow = styles[@"boxShadow"]?[WXConvert WXBoxShadow:styles[@"boxShadow"] scaleFactor:self.weexInstance.pixelScaleFactor]:nil;
- [self configBoxShadow:_boxShadow];
+ }
+ if (styles[@"darkThemeBoxShadow"]) {
+ _darkThemeBoxShadow = [WXConvert WXBoxShadow:styles[@"darkThemeBoxShadow"] scaleFactor:self.weexInstance.pixelScaleFactor];
+ }
+ if (styles[@"boxShadow"] || styles[@"darkThemeBoxShadow"]) {
+ WXBoxShadow* usingBoxShadow = nil;
+ if (_darkThemeBoxShadow && [self.weexInstance isDarkTheme]) {
+ usingBoxShadow = _darkThemeBoxShadow;
+ }
+ else {
+ usingBoxShadow = _boxShadow;
+ }
+
+ if (usingBoxShadow) {
+ _lastBoxShadow = usingBoxShadow;
+ [self configBoxShadow:usingBoxShadow];
+ }
[self setNeedsDisplay];
}
@@ -352,6 +367,11 @@
_boxShadow = nil;
[self setNeedsDisplay];
}
+ if (styles && [styles containsObject:@"darkThemeBoxShadow"]) {
+ _darkThemeBoxShadow = nil;
+ [self setNeedsDisplay];
+ }
+
if (styles && [styles containsObject:@"backgroundImage"]) {
_backgroundImage = nil;
}