[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;
     }