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/04/26 06:56:47 UTC

[25/50] [abbrv] incubator-weex git commit: * [ios] bug fix about gradient background-image

* [ios] bug fix about gradient background-image


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

Branch: refs/heads/dev
Commit: db03bb0535badc788302ad2934ba6635537d2766
Parents: 536beb0
Author: acton393 <zh...@gmail.com>
Authored: Sun Apr 23 00:14:34 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Sun Apr 23 00:14:34 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXComponent_internal.h    |  1 -
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     | 23 +++++++++++---------
 .../Sources/View/WXComponent+ViewManagement.m   |  1 -
 3 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/db03bb05/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
index 31cdc7c..21d510e 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -47,7 +47,6 @@
      */
     UIColor *_backgroundColor;
     NSString *_backgroundImage;
-    CAGradientLayer * _gradientLayer;
     WXClipType _clipToBounds;
     UIView *_view;
     CGFloat _opacity;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/db03bb05/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 c90d499..e563f82 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
@@ -483,20 +483,14 @@
     __weak typeof(self) weakSelf = self;
     dispatch_async(dispatch_get_main_queue(), ^{
         __strong typeof(self) strongSelf = weakSelf;
-        /*
-         must insert the gradientLayer at index 0, and then set masksToBounds to match the view bounds
-         or the subview will be invisible
-         */
-        
         if(strongSelf) {
             UIColor * startColor = (UIColor*)linearGradient[@"startColor"];
             UIColor * endColor = (UIColor*)linearGradient[@"endColor"];
-            if (_gradientLayer && [strongSelf.view.layer.sublayers containsObject:_gradientLayer]) {
-                [_gradientLayer removeFromSuperlayer];
+            CAGradientLayer * gradientLayer = [WXUtility gradientLayerFromColors:@[startColor, endColor] locations:nil frame:strongSelf.view.bounds gradientType:[linearGradient[@"gradientType"] integerValue]];
+            if (gradientLayer) {
+                _backgroundColor = [UIColor colorWithPatternImage:[strongSelf imageFromLayer:gradientLayer]];
+                strongSelf.view.backgroundColor = _backgroundColor;
             }
-             _gradientLayer = [WXUtility gradientLayerFromColors:@[startColor, endColor] locations:nil frame:strongSelf.view.bounds gradientType:[linearGradient[@"gradientType"] integerValue]];
-            [strongSelf.view.layer insertSublayer:_gradientLayer atIndex:0];
-            strongSelf.view.layer.masksToBounds = YES;
         }
     });
 }
@@ -527,6 +521,15 @@
     }
 }
 
+- (UIImage *)imageFromLayer:(CALayer *)layer
+{
+    UIGraphicsBeginImageContextWithOptions(layer.frame.size, NO, 0);
+    [layer renderInContext:UIGraphicsGetCurrentContext()];
+    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    return outputImage;
+}
+
 #pragma mark Reset
 - (void)resetStyles:(NSArray *)styles
 {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/db03bb05/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
index 88f03d4..c93df20 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
@@ -236,7 +236,6 @@
     _view = nil;
     [_layer removeFromSuperlayer];
     _layer = nil;
-    _gradientLayer = nil;
     
     [self viewDidUnload];
 }