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]];