You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/02/28 02:30:15 UTC

[35/50] incubator-weex git commit: + [ios] update box shadow through wxcomponent category

+ [ios] update box shadow through wxcomponent category


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/385ed9de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/385ed9de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/385ed9de

Branch: refs/heads/0.11-dev
Commit: 385ed9de42617fbcdf2100479dcdbd13b5ad1bfe
Parents: eae99cb
Author: \u9f50\u5c71 <su...@163.com>
Authored: Fri Feb 24 10:17:26 2017 +0800
Committer: \u9f50\u5c71 <su...@163.com>
Committed: Fri Feb 24 10:17:26 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  8 ++
 .../Sources/Display/WXComponent+BoxShadow.h     | 46 ++++++++++
 .../Sources/Display/WXComponent+BoxShadow.m     | 88 ++++++++++++++++++++
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |  8 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |  5 +-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h   | 32 -------
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m   | 67 ---------------
 7 files changed, 147 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 86687e6..0f2ff1e 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -227,6 +227,8 @@
 		C4D872221E5DDEDA00E39BC1 /* WXInnerLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C4D872201E5DDEDA00E39BC1 /* WXInnerLayer.h */; };
 		C4D872251E5DDF7500E39BC1 /* WXBoxShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = C4D872231E5DDF7500E39BC1 /* WXBoxShadow.h */; };
 		C4D872261E5DDF7500E39BC1 /* WXBoxShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D872241E5DDF7500E39BC1 /* WXBoxShadow.m */; };
+		C4E375371E5FCBD3009B2D9C /* WXComponent+BoxShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = C4E375351E5FCBD3009B2D9C /* WXComponent+BoxShadow.m */; };
+		C4E375381E5FCBD3009B2D9C /* WXComponent+BoxShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = C4E375361E5FCBD3009B2D9C /* WXComponent+BoxShadow.h */; };
 		C4F012791E1502A6003378D0 /* SRWebSocket+Weex.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012721E1502A6003378D0 /* SRWebSocket+Weex.h */; };
 		C4F0127A1E1502A6003378D0 /* SRWebSocket+Weex.m in Sources */ = {isa = PBXBuildFile; fileRef = C4F012731E1502A6003378D0 /* SRWebSocket+Weex.m */; };
 		C4F0127B1E1502A6003378D0 /* WXWebSocketDefaultImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F012741E1502A6003378D0 /* WXWebSocketDefaultImpl.h */; };
@@ -520,6 +522,8 @@
 		C4D872201E5DDEDA00E39BC1 /* WXInnerLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXInnerLayer.h; sourceTree = "<group>"; };
 		C4D872231E5DDF7500E39BC1 /* WXBoxShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXBoxShadow.h; sourceTree = "<group>"; };
 		C4D872241E5DDF7500E39BC1 /* WXBoxShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXBoxShadow.m; sourceTree = "<group>"; };
+		C4E375351E5FCBD3009B2D9C /* WXComponent+BoxShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "WXComponent+BoxShadow.m"; sourceTree = "<group>"; };
+		C4E375361E5FCBD3009B2D9C /* WXComponent+BoxShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "WXComponent+BoxShadow.h"; sourceTree = "<group>"; };
 		C4F012721E1502A6003378D0 /* SRWebSocket+Weex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SRWebSocket+Weex.h"; sourceTree = "<group>"; };
 		C4F012731E1502A6003378D0 /* SRWebSocket+Weex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SRWebSocket+Weex.m"; sourceTree = "<group>"; };
 		C4F012741E1502A6003378D0 /* WXWebSocketDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXWebSocketDefaultImpl.h; sourceTree = "<group>"; };
@@ -687,6 +691,8 @@
 		7461F88B1CFB373100F62D44 /* Display */ = {
 			isa = PBXGroup;
 			children = (
+				C4E375351E5FCBD3009B2D9C /* WXComponent+BoxShadow.m */,
+				C4E375361E5FCBD3009B2D9C /* WXComponent+BoxShadow.h */,
 				C4D8721F1E5DDEDA00E39BC1 /* WXInnerLayer.m */,
 				C4D872201E5DDEDA00E39BC1 /* WXInnerLayer.h */,
 				7461F88C1CFB373100F62D44 /* WXDisplayQueue.h */,
@@ -1191,6 +1197,7 @@
 				D312CE3B1C730DEB00046D68 /* WXWebComponent.h in Headers */,
 				741081261CEDB4EC001BC6E5 /* WXComponent_internal.h in Headers */,
 				77E65A191C155F25008B8775 /* WXScrollerComponent.h in Headers */,
+				C4E375381E5FCBD3009B2D9C /* WXComponent+BoxShadow.h in Headers */,
 				742AD7311DF98C45007DC46C /* WXResourceRequestHandlerDefaultImpl.h in Headers */,
 				C4F0127D1E1502A6003378D0 /* WXWebSocketHandler.h in Headers */,
 				DC03ADBA1D508719003F76E7 /* WXTextAreaComponent.h in Headers */,
@@ -1450,6 +1457,7 @@
 				74A4BA9B1CB3BAA100195969 /* WXThreadSafeMutableDictionary.m in Sources */,
 				77E65A1A1C155F25008B8775 /* WXScrollerComponent.m in Sources */,
 				747A787D1D1BAAC900DED9D0 /* WXComponent+ViewManagement.m in Sources */,
+				C4E375371E5FCBD3009B2D9C /* WXComponent+BoxShadow.m in Sources */,
 				2A837AB51CD9DE9200AEDF03 /* WXLoadingIndicator.m in Sources */,
 				C4F012831E1502E9003378D0 /* WXWebSocketModule.m in Sources */,
 				59D3CA401CF9ED57008835DC /* Layout.c in Sources */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.h b/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.h
new file mode 100644
index 0000000..35df12e
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.h
@@ -0,0 +1,46 @@
+/**
+ * Created by Weex.
+ * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
+ *
+ * This source code is licensed under the Apache Licence 2.0.
+ * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
+ */
+
+#import <Foundation/Foundation.h>
+#import "WXComponent.h"
+#import "WXBoxShadow.h"
+
+@interface WXComponent (BoxShadow)
+
+/**
+ *  @abstract get boxshadow from view
+ *
+ *  @param view
+ *
+ *  @return A WXBoxShadow object
+ */
+- (WXBoxShadow *_Nullable)getViewBoxShadow:(UIView *_Nullable)view;
+
+/**
+ *  @abstract compare boxshadow
+ *
+ *  @param boxShadow
+ *
+ *  @param view
+ *
+ *  @return if not equal return NO, if equal return YES
+ */
+- (BOOL)EqualBoxShadow:(WXBoxShadow *_Nullable)boxShadow withBoxShadow:(WXBoxShadow *_Nullable)compareBoxShadow;
+
+/**
+ *  @abstract config view Layer with boxshadow, lastboxshadow and originalBoxShadow
+ *
+ *  @param boxShadow the boxshadow will be set
+ *
+ *  @param lastboxshadow the boxshadow set last time
+ *
+ *  @param originalBoxShadow the view  original boxshadow
+ *
+ */
+- (void)configViewLayer:(UIView *_Nullable)view boxShadow:(WXBoxShadow *_Nullable)boxShadow;
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.m b/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.m
new file mode 100644
index 0000000..05e9e1c
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Display/WXComponent+BoxShadow.m
@@ -0,0 +1,88 @@
+/**
+ * Created by Weex.
+ * Copyright (c) 2016, Alibaba, Inc. All rights reserved.
+ *
+ * This source code is licensed under the Apache Licence 2.0.
+ * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
+ */
+
+#import "WXComponent+BoxShadow.h"
+#import "WXBoxShadow.h"
+#import "WXConvert.h"
+#import "WXUtility.h"
+#import "WXComponent_internal.h"
+
+@implementation WXComponent (BoxShadow)
+
+
+- (WXBoxShadow *_Nullable)getViewBoxShadow:(UIView *_Nullable)view
+{
+    WXBoxShadow *boxShadow = [WXBoxShadow new];
+    boxShadow.shadowColor = view.layer.shadowColor;
+    boxShadow.shadowOffset = view.layer.shadowOffset;
+    boxShadow.shadowRadius = view.layer.shadowRadius;
+    boxShadow.shadowOpacity =  view.layer.shadowOpacity;
+    return boxShadow;
+}
+
+- (void)resetViewLayer:(UIView *_Nullable)view lastBoxShadow:(WXBoxShadow *_Nullable)lastBoxShadow  boxShadow:(WXBoxShadow *_Nullable)originalBoxShadow
+{
+    UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];
+    view.layer.masksToBounds = NO;
+    view.layer.shadowColor = originalBoxShadow.shadowColor;
+    view.layer.shadowOffset = originalBoxShadow.shadowOffset;
+    view.layer.shadowRadius = originalBoxShadow.shadowRadius;
+    view.layer.shadowOpacity = originalBoxShadow.shadowOpacity;
+    view.layer.shadowPath = shadowPath.CGPath;
+    if (lastBoxShadow.innerLayer) {
+        if (lastBoxShadow.innerLayer) {
+            [lastBoxShadow.innerLayer removeFromSuperlayer];
+        }
+    }
+}
+
+// if not equal return NO, if equal return YES
+- (BOOL)EqualBoxShadow:(WXBoxShadow *_Nullable)boxShadow withBoxShadow:(WXBoxShadow *_Nullable)compareBoxShadow
+{
+    if(!compareBoxShadow && !boxShadow) {
+        return YES;
+    } else if (CGColorEqualToColor(boxShadow.shadowColor,compareBoxShadow.shadowColor) &&
+               CGSizeEqualToSize(boxShadow.shadowOffset,compareBoxShadow.shadowOffset) &&
+               WXFloatEqual(boxShadow.shadowRadius,compareBoxShadow.shadowRadius)&& (boxShadow.isInset == compareBoxShadow.isInset))
+    {
+        return YES;
+    }
+    return NO;
+    
+}
+
+- (void)configViewLayer:(UIView *_Nullable)view boxShadow:(WXBoxShadow *_Nullable)boxShadow
+{
+    if (!_originalBoxShadow) {
+        _originalBoxShadow = [self getViewBoxShadow:view];
+    }
+    if (!boxShadow && !_lastBoxShadow) {
+        return;
+    }
+    [self resetViewLayer:view lastBoxShadow:_lastBoxShadow boxShadow:_originalBoxShadow];
+    if (!boxShadow) {
+        return;
+    }
+    if (boxShadow.isInset) {
+        if (boxShadow.innerLayer) {
+            [boxShadow.innerLayer removeFromSuperlayer];
+            boxShadow.innerLayer.frame = view.bounds;
+            [view.layer addSublayer:boxShadow.innerLayer];
+        }
+    } else {
+        UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];
+        view.layer.masksToBounds = NO;
+        view.layer.shadowColor = boxShadow.shadowColor;
+        view.layer.shadowOffset = boxShadow.shadowOffset;
+        view.layer.shadowRadius = boxShadow.shadowRadius;
+        view.layer.shadowOpacity = boxShadow.shadowOpacity;
+        view.layer.shadowPath = shadowPath.CGPath;
+    }
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
index ad5b338..059f79d 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
@@ -12,6 +12,7 @@
 #import "WXAssert.h"
 #import "WXComponent_internal.h"
 #import "WXSDKInstance_private.h"
+#import "WXComponent+BoxShadow.h"
 
 @implementation WXComponent (Layout)
 
@@ -117,11 +118,8 @@
             }
             
             strongSelf.view.frame = strongSelf.calculatedFrame;
-            if (![WXBoxShadow EqualBoxShadow:_boxShadow withBoxShadow:_lastBoxShadow]) {
-                if (!_originalBoxShadow) {
-                    _originalBoxShadow = [WXBoxShadow getViewBoxShadow:strongSelf.view];
-                }
-                [WXBoxShadow configViewLayer:strongSelf.view boxShadow:_boxShadow lastBoxShadow:_lastBoxShadow originalBoxShadow:_originalBoxShadow];
+            if (![self EqualBoxShadow:_boxShadow withBoxShadow:_lastBoxShadow]) {
+                [self configViewLayer:strongSelf.view boxShadow:_boxShadow];
             }
             
             if (strongSelf->_transform) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
index 126754c..c6d5ba6 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
@@ -26,7 +26,7 @@
 #import "WXRoundedRect.h"
 #import <pthread/pthread.h>
 #import "WXComponent+PseudoClassManagement.h"
-#import "WXBoxShadow.h"
+#import "WXComponent+BoxShadow.h"
 
 #pragma clang diagnostic ignored "-Wincomplete-implementation"
 #pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
@@ -212,8 +212,7 @@
         }
         
         if (_boxShadow) {
-            _originalBoxShadow = [WXBoxShadow getViewBoxShadow:self.view];
-            [WXBoxShadow configViewLayer:self.view boxShadow:_boxShadow lastBoxShadow:_lastBoxShadow originalBoxShadow:_originalBoxShadow];
+            [self configViewLayer:self.view boxShadow:_boxShadow];
         }
         
         _view.wx_component = self;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h b/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h
index 73de560..01dfa5c 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h
@@ -19,38 +19,6 @@
 @property CGFloat shadowOpacity;
 
 /**
- *  @abstract get boxshadow from view
- *
- *  @param view
- *
- *  @return A WXBoxShadow object
- */
-+(WXBoxShadow *_Nullable)getViewBoxShadow:(UIView *_Nullable)view;
-
-/**
- *  @abstract compare boxshadow
- *
- *  @param boxShadow
- *
- *  @param view
- *
- *  @return if not equal return NO, if equal return YES
- */
-+(BOOL)EqualBoxShadow:(WXBoxShadow *_Nullable)boxShadow withBoxShadow:(WXBoxShadow *_Nullable)compareBoxShadow;
-
-/**
- *  @abstract config view Layer with boxshadow, lastboxshadow and originalBoxShadow
- *
- *  @param boxShadow the boxshadow will be set
- *
- *  @param lastboxshadow the boxshadow set last time
- *
- *  @param originalBoxShadow the view  original boxshadow
- *
- */
-+(void)configViewLayer:(UIView *_Nullable)view boxShadow:(WXBoxShadow *_Nullable)boxShadow lastBoxShadow:(WXBoxShadow *_Nullable)lastBoxShadow originalBoxShadow:(WXBoxShadow *_Nullable)originalBoxShadow;
-
-/**
  *  @abstract get boxshadow from string and adapter phone screen
  *
  *  @param string the boxshadow string

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/385ed9de/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m b/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m
index e044d55..5422747 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m
@@ -12,73 +12,6 @@
 
 @implementation WXBoxShadow
 
-+(WXBoxShadow *_Nullable)getViewBoxShadow:(UIView *_Nullable)view
-{
-    WXBoxShadow *boxShadow = [WXBoxShadow new];
-    boxShadow.shadowColor = view.layer.shadowColor;
-    boxShadow.shadowOffset = view.layer.shadowOffset;
-    boxShadow.shadowRadius = view.layer.shadowRadius;
-    boxShadow.shadowOpacity =  view.layer.shadowOpacity;
-    return boxShadow;
-}
-
-+(void)resetViewLayer:(UIView *_Nullable)view lastBoxShadow:(WXBoxShadow *_Nullable)lastBoxShadow  boxShadow:(WXBoxShadow *_Nullable)originalBoxShadow
-{
-    UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];
-    view.layer.masksToBounds = NO;
-    view.layer.shadowColor = originalBoxShadow.shadowColor;
-    view.layer.shadowOffset = originalBoxShadow.shadowOffset;
-    view.layer.shadowRadius = originalBoxShadow.shadowRadius;
-    view.layer.shadowOpacity = originalBoxShadow.shadowOpacity;
-    view.layer.shadowPath = shadowPath.CGPath;
-    if (lastBoxShadow.innerLayer) {
-        if (lastBoxShadow.innerLayer) {
-            [lastBoxShadow.innerLayer removeFromSuperlayer];
-        }
-    }
-}
-
-// if not equal return NO, if equal return YES
-+(BOOL)EqualBoxShadow:(WXBoxShadow *_Nullable)boxShadow withBoxShadow:(WXBoxShadow *_Nullable)compareBoxShadow
-{
-    if(!compareBoxShadow && !boxShadow) {
-        return YES;
-    } else if (CGColorEqualToColor(boxShadow.shadowColor,compareBoxShadow.shadowColor) &&
-        CGSizeEqualToSize(boxShadow.shadowOffset,compareBoxShadow.shadowOffset) &&
-        WXFloatEqual(boxShadow.shadowRadius,compareBoxShadow.shadowRadius)&& (boxShadow.isInset == boxShadow.isInset))
-    {
-        return YES;
-    }
-    return NO;
-    
-}
-
-+(void)configViewLayer:(UIView *_Nullable)view boxShadow:(WXBoxShadow *_Nullable)boxShadow lastBoxShadow:(WXBoxShadow *_Nullable)lastBoxShadow originalBoxShadow:(WXBoxShadow *_Nullable)originalBoxShadow
-{
-    if (!boxShadow && !lastBoxShadow) {
-        return;
-    }
-    [self resetViewLayer:view lastBoxShadow:lastBoxShadow boxShadow:originalBoxShadow];
-    if (!boxShadow) {
-        return;
-    }
-    if (boxShadow.isInset) {
-        if (boxShadow.innerLayer) {
-            [boxShadow.innerLayer removeFromSuperlayer];
-            boxShadow.innerLayer.frame = view.bounds;
-            [view.layer addSublayer:boxShadow.innerLayer];
-        }
-    } else {
-        UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];
-        view.layer.masksToBounds = NO;
-        view.layer.shadowColor = boxShadow.shadowColor;
-        view.layer.shadowOffset = boxShadow.shadowOffset;
-        view.layer.shadowRadius = boxShadow.shadowRadius;
-        view.layer.shadowOpacity = boxShadow.shadowOpacity;
-        view.layer.shadowPath = shadowPath.CGPath;
-    }
-}
-
 + (NSArray *)getBoxShadowElementsByBlank:(NSString *)string
 {
     string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];