You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2017/08/03 09:51:19 UTC

[1/6] incubator-weex git commit: * [ios] add perspective support for rotate3d

Repository: incubator-weex
Updated Branches:
  refs/heads/0.16-dev e5f560e5c -> 199e4665d


* [ios] add perspective support for rotate3d


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

Branch: refs/heads/0.16-dev
Commit: 22965189432e5289bd96c4b435d3fafea8fa8bfc
Parents: 58aaee6
Author: acton393 <zh...@gmail.com>
Authored: Tue Jul 25 22:45:58 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Tue Jul 25 22:45:58 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXComponent_internal.h       |  3 +++
 ios/sdk/WeexSDK/Sources/Component/WXTransform.h    |  1 +
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m    | 14 +++++++++++++-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m        |  1 +
 ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m |  6 +++++-
 .../Sources/View/WXComponent+ViewManagement.m      | 17 +++++++++++++++++
 6 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/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 7226ced..20fb87b 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -55,6 +55,9 @@
     WXBoxShadow *_lastBoxShadow;
     WXBoxShadow *_boxShadow;
     
+    // default is parallel projection, so this will be CGFLOAT_MAX
+    CGFloat _perspective;
+    
     /**
      * accessibility support
      */

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/ios/sdk/WeexSDK/Sources/Component/WXTransform.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTransform.h b/ios/sdk/WeexSDK/Sources/Component/WXTransform.h
index 75db1c7..e9e23c3 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.h
@@ -32,6 +32,7 @@
 @property (nonatomic, strong, readonly) WXLength *translateY;
 @property (nonatomic, assign, readonly) float scaleX;
 @property (nonatomic, assign, readonly) float scaleY;
+@property (nonatomic, assign) float perspective;
 
 - (instancetype)initWithCSSValue:(NSString *)cssValue origin:(NSString *)origin instance:(WXSDKInstance *)instance;
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
index b6287e7..edd3177 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
@@ -43,6 +43,7 @@
     float _rotateX;
     float _rotateY;
     float _rotateZ;
+    float _perspective;
     
     CATransform3D _nativeTransform;
     BOOL _useNativeTransform;
@@ -59,6 +60,9 @@
         _rotateZ = 0.0;
         _rotateAngle = 0.0;
         
+        // default is parallel projection
+        _perspective = CGFLOAT_MAX;
+        
         [self parseTransform:cssValue];
         [self parseTransformOrigin:origin];
     }
@@ -147,8 +151,8 @@
     if (_useNativeTransform) {
         return _nativeTransform;
     }
-    CATransform3D nativeTransform3d = [self nativeTransformWithoutRotateWithView:view];
     
+    CATransform3D nativeTransform3d = [self nativeTransformWithoutRotateWithView:view];
     if (_rotateX != 0) {
         CATransform3D rotateXTransform = CATransform3DMakeRotation(_rotateX, 1, 0, 0);
         nativeTransform3d = CATransform3DConcat(nativeTransform3d, rotateXTransform);
@@ -169,6 +173,9 @@
 {
     CATransform3D nativeTansform3D = CATransform3DIdentity;
     
+    if (_perspective && !isinf(_perspective)) {
+        nativeTansform3D.m34 = -1.0/_perspective;
+    }
     if (!view || view.bounds.size.width <= 0 || view.bounds.size.height <= 0) {
         return nativeTansform3D;
     }
@@ -224,6 +231,11 @@
     }
     CATransform3D nativeTransform3d = [self nativeTransformWithView:view];
     if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d)){
+        CATransform3D presentationTransform = view.layer.presentationLayer.transform;
+        if (presentationTransform.m34 != 0) {
+            //  just for perspective
+            nativeTransform3d = presentationTransform;
+        }
         view.layer.transform = nativeTransform3d;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/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 bd5549b..7634918 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
@@ -94,6 +94,7 @@
         _ariaHidden = NO;
         
         _async = NO;
+        _perspective = CGFLOAT_MAX;
         
         //TODO set indicator style 
         if ([type isEqualToString:@"indicator"]) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index ff55ee2..7917d7f 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -85,7 +85,6 @@
 
 - (void)animationDidStart:(CAAnimation *)anim
 {
-    [self applyTransform];
 }
 
 -(void)applyTransform
@@ -94,7 +93,9 @@
         return;
     }
     if ([_animationInfo.propertyName hasPrefix:@"transform"]) {
+        float perspective = _animationInfo.target->_perspective;
         WXTransform *transform = _animationInfo.target->_transform;
+        transform.perspective = perspective;
         [transform applyTransformForView:_animationInfo.target.view];
     } else if ([_animationInfo.propertyName isEqualToString:@"backgroundColor"]) {
         _animationInfo.target.view.layer.backgroundColor = (__bridge CGColorRef _Nullable)(_animationInfo.toValue);
@@ -117,6 +118,8 @@
         return;
     }
     
+    [self applyTransform];
+    
     if ([_animationInfo.propertyName hasPrefix:@"bounds.size"]) {
         /*
          * http://ronnqvi.st/about-the-anchorpoint/
@@ -193,6 +196,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
         if ([property isEqualToString:@"transform"]) {
             NSString *transformOrigin = styles[@"transformOrigin"];
             WXTransform *wxTransform = [[WXTransform alloc] initWithCSSValue:value origin:transformOrigin instance:self.weexInstance];
+            wxTransform.perspective = target->_perspective;
             WXTransform *oldTransform = target->_transform;
             if (wxTransform.rotateAngle != oldTransform.rotateAngle) {
                 WXAnimationInfo *newInfo = [info copy];

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22965189/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 40e9889..31385de 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
@@ -169,6 +169,14 @@ do {\
     if (_boxShadow) {
         _lastBoxShadow = _boxShadow;
     }
+    if (styles[@"perspective"]) {
+        _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
+        if (_perspective <= 0) {
+            _perspective = CGFLOAT_MAX;
+        }
+        
+        _transform.perspective = _perspective;
+    }
 }
 
 - (void)_updateViewStyles:(NSDictionary *)styles
@@ -227,6 +235,14 @@ do {\
         });
     }
     
+    if (styles[@"perspective"]) {
+        _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
+        if (_perspective <= 0) {
+            _perspective = CGFLOAT_MAX;
+        }
+         _transform.perspective = _perspective;
+    }
+    
     if (styles[@"visibility"]) {
         _visibility = [WXConvert WXVisibility:styles[@"visibility"]];
         if (_visibility == WXVisibilityShow) {
@@ -238,6 +254,7 @@ do {\
     }
     if (styles[@"transform"]) {
         _transform = [[WXTransform alloc] initWithCSSValue:[WXConvert NSString:styles[@"transform"]] origin:[WXConvert NSString:self.styles[@"transformOrigin"]] instance:self.weexInstance];
+        _transform.perspective = _perspective;
         if (!CGRectEqualToRect(self.calculatedFrame, CGRectZero)) {
             [_transform applyTransformForView:_view];
             [_layer setNeedsDisplay];


[4/6] incubator-weex git commit: * [ios] use perspective as transform function but the css value

Posted by ac...@apache.org.
* [ios] use perspective as transform function but the css value


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

Branch: refs/heads/0.16-dev
Commit: 6cf70bb71cbb4d43827c24a166fcc4a909ab7c6c
Parents: 53e96f5
Author: acton393 <zh...@gmail.com>
Authored: Thu Jul 27 14:12:06 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Jul 27 14:12:06 2017 +0800

----------------------------------------------------------------------
 .../Sources/Component/WXComponent_internal.h     |  3 ---
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m  | 12 ++++++++++--
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m      |  1 -
 .../WeexSDK/Sources/Module/WXAnimationModule.m   | 10 ++++++----
 .../Sources/View/WXComponent+ViewManagement.m    | 19 -------------------
 5 files changed, 16 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6cf70bb7/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 20fb87b..7226ced 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -55,9 +55,6 @@
     WXBoxShadow *_lastBoxShadow;
     WXBoxShadow *_boxShadow;
     
-    // default is parallel projection, so this will be CGFLOAT_MAX
-    CGFloat _perspective;
-    
     /**
      * accessibility support
      */

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6cf70bb7/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
index 0948905..9c055c2 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
@@ -230,8 +230,8 @@
         [self setAnchorPoint:anchorPoint forView:view];
     }
     CATransform3D nativeTransform3d = [self nativeTransformWithView:view];
-    if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d)){
-        CATransform3D presentationTransform = view.layer.presentationLayer.transform;
+    CATransform3D presentationTransform = view.layer.presentationLayer.transform;
+    if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d) && !CATransform3DEqualToTransform(view.layer.transform, presentationTransform)){
         if (presentationTransform.m34 != 0 && !isinf(_perspective)) {
             //  just for perspective
             nativeTransform3d = presentationTransform;
@@ -342,6 +342,14 @@
    _rotateZ = [self getAngle:value[0]];
 }
 
+- (void)parsePerspective:(NSArray *)value
+{
+    _perspective = [value[0] doubleValue];
+    if (_perspective <= 0 ) {
+        _perspective = CGFLOAT_MAX;
+    }
+}
+
 - (void)parseTranslate:(NSArray *)value
 {
     WXLength *translateX;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6cf70bb7/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 7634918..bd5549b 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
@@ -94,7 +94,6 @@
         _ariaHidden = NO;
         
         _async = NO;
-        _perspective = CGFLOAT_MAX;
         
         //TODO set indicator style 
         if ([type isEqualToString:@"indicator"]) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6cf70bb7/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index bd2c868..01bf984 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -94,9 +94,7 @@
         return;
     }
     if ([_animationInfo.propertyName hasPrefix:@"transform"]) {
-        float perspective = _animationInfo.target->_perspective;
         WXTransform *transform = _animationInfo.target->_transform;
-        transform.perspective = perspective;
         [transform applyTransformForView:_animationInfo.target.view];
     } else if ([_animationInfo.propertyName isEqualToString:@"backgroundColor"]) {
         _animationInfo.target.view.layer.backgroundColor = (__bridge CGColorRef _Nullable)(_animationInfo.toValue);
@@ -119,7 +117,7 @@
         return;
     }
     
-    float perspective = _animationInfo.target->_perspective;
+    float perspective = _animationInfo.target->_transform.perspective;
     if (!isinf(perspective)) {
         [self applyTransform];
     }
@@ -200,7 +198,6 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
         if ([property isEqualToString:@"transform"]) {
             NSString *transformOrigin = styles[@"transformOrigin"];
             WXTransform *wxTransform = [[WXTransform alloc] initWithCSSValue:value origin:transformOrigin instance:self.weexInstance];
-            wxTransform.perspective = target->_perspective;
             WXTransform *oldTransform = target->_transform;
             if (wxTransform.rotateAngle != oldTransform.rotateAngle) {
                 WXAnimationInfo *newInfo = [info copy];
@@ -373,6 +370,11 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
             [delegate applyTransform];
         }
     } else {
+        CATransform3D transform = layer.transform;
+        if (info.target->_transform.perspective && !isinf(info.target->_transform.perspective)) {
+            transform.m34 = -1.0/info.target->_transform.perspective*[UIScreen mainScreen].scale;
+            layer.transform = transform;
+        }
         [layer addAnimation:animation forKey:info.propertyName];
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6cf70bb7/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 8f086d4..40e9889 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
@@ -169,15 +169,6 @@ do {\
     if (_boxShadow) {
         _lastBoxShadow = _boxShadow;
     }
-    if (styles[@"perspective"]) {
-        // if the perspective is none, treated as 0
-        _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
-        if (_perspective <= 0) {
-            _perspective = CGFLOAT_MAX;
-        }
-        
-        _transform.perspective = _perspective;
-    }
 }
 
 - (void)_updateViewStyles:(NSDictionary *)styles
@@ -236,15 +227,6 @@ do {\
         });
     }
     
-    if (styles[@"perspective"]) {
-        // if the perspective is none, treated as 0
-        _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
-        if (_perspective <= 0) {
-            _perspective = CGFLOAT_MAX;
-        }
-        _transform.perspective = _perspective;
-    }
-    
     if (styles[@"visibility"]) {
         _visibility = [WXConvert WXVisibility:styles[@"visibility"]];
         if (_visibility == WXVisibilityShow) {
@@ -256,7 +238,6 @@ do {\
     }
     if (styles[@"transform"]) {
         _transform = [[WXTransform alloc] initWithCSSValue:[WXConvert NSString:styles[@"transform"]] origin:[WXConvert NSString:self.styles[@"transformOrigin"]] instance:self.weexInstance];
-        _transform.perspective = _perspective;
         if (!CGRectEqualToRect(self.calculatedFrame, CGRectZero)) {
             [_transform applyTransformForView:_view];
             [_layer setNeedsDisplay];


[6/6] incubator-weex git commit: Merge branch 'ios-feature-0.16-rotate-perspective' of https://github.com/acton393/incubator-weex into wip-us-0.16-dev

Posted by ac...@apache.org.
Merge branch 'ios-feature-0.16-rotate-perspective' of https://github.com/acton393/incubator-weex into wip-us-0.16-dev


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

Branch: refs/heads/0.16-dev
Commit: 199e4665d6df7cf8bf571caac2753ce167843e02
Parents: e5f560e af653d9
Author: acton393 <zh...@gmail.com>
Authored: Thu Aug 3 17:51:04 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Aug 3 17:51:04 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTransform.h |  1 +
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m | 33 ++++++++++++++------
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |  5 +++
 3 files changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------



[5/6] incubator-weex git commit: * [ios] fix bug about rotate order

Posted by ac...@apache.org.
* [ios] fix bug about rotate order


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

Branch: refs/heads/0.16-dev
Commit: af653d98f3867dbda5ba1e34218f6d75b968accd
Parents: 6cf70bb
Author: acton393 <zh...@gmail.com>
Authored: Thu Jul 27 22:23:52 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Jul 27 22:23:52 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m | 23 ++++++++------------
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |  5 -----
 2 files changed, 9 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af653d98/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
index 9c055c2..5267f90 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
@@ -153,17 +153,17 @@
     }
     
     CATransform3D nativeTransform3d = [self nativeTransformWithoutRotateWithView:view];
-    if (_rotateX != 0) {
-        CATransform3D rotateXTransform = CATransform3DMakeRotation(_rotateX, 1, 0, 0);
-        nativeTransform3d = CATransform3DConcat(nativeTransform3d, rotateXTransform);
+
+    if (_rotateAngle != 0 || _rotateZ != 0) {
+        nativeTransform3d = CATransform3DRotate(nativeTransform3d, _rotateAngle?:_rotateZ, 0, 0, 1);
     }
+    
     if (_rotateY != 0) {
-        CATransform3D rotateYTransform = CATransform3DMakeRotation(_rotateY, 0, 1, 0);
-        nativeTransform3d = CATransform3DConcat(nativeTransform3d, rotateYTransform);
+        nativeTransform3d = CATransform3DRotate(nativeTransform3d, _rotateY, 0, 1, 0);
     }
-    if (_rotateAngle != 0 || _rotateZ != 0) {
-        CATransform3D rotateZTransform = CATransform3DMakeRotation(_rotateAngle?:_rotateZ, 0, 0, 1);
-        nativeTransform3d = CATransform3DConcat(nativeTransform3d, rotateZTransform);
+    
+    if (_rotateX != 0) {
+        nativeTransform3d = CATransform3DRotate(nativeTransform3d, _rotateX, 1, 0, 0);
     }
     
     return nativeTransform3d;
@@ -230,12 +230,7 @@
         [self setAnchorPoint:anchorPoint forView:view];
     }
     CATransform3D nativeTransform3d = [self nativeTransformWithView:view];
-    CATransform3D presentationTransform = view.layer.presentationLayer.transform;
-    if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d) && !CATransform3DEqualToTransform(view.layer.transform, presentationTransform)){
-        if (presentationTransform.m34 != 0 && !isinf(_perspective)) {
-            //  just for perspective
-            nativeTransform3d = presentationTransform;
-        }
+    if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d)){
         view.layer.transform = nativeTransform3d;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af653d98/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index 01bf984..38651e0 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -117,11 +117,6 @@
         return;
     }
     
-    float perspective = _animationInfo.target->_transform.perspective;
-    if (!isinf(perspective)) {
-        [self applyTransform];
-    }
-    
     if ([_animationInfo.propertyName hasPrefix:@"bounds.size"]) {
         /*
          * http://ronnqvi.st/about-the-anchorpoint/


[2/6] incubator-weex git commit: * [ios] apply transform when stop animation and start animation

Posted by ac...@apache.org.
* [ios] apply transform when stop animation and start animation


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

Branch: refs/heads/0.16-dev
Commit: 2ad05e5a5c779b56b75c68d55ea6c76bf349daf2
Parents: 2296518
Author: acton393 <zh...@gmail.com>
Authored: Wed Jul 26 11:39:16 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Jul 26 11:39:16 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m    | 4 ++--
 ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m | 6 +++++-
 2 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2ad05e5a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
index edd3177..0948905 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
@@ -174,7 +174,7 @@
     CATransform3D nativeTansform3D = CATransform3DIdentity;
     
     if (_perspective && !isinf(_perspective)) {
-        nativeTansform3D.m34 = -1.0/_perspective;
+        nativeTansform3D.m34 = -1.0/_perspective*[UIScreen mainScreen].scale;
     }
     if (!view || view.bounds.size.width <= 0 || view.bounds.size.height <= 0) {
         return nativeTansform3D;
@@ -232,7 +232,7 @@
     CATransform3D nativeTransform3d = [self nativeTransformWithView:view];
     if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d)){
         CATransform3D presentationTransform = view.layer.presentationLayer.transform;
-        if (presentationTransform.m34 != 0) {
+        if (presentationTransform.m34 != 0 && !isinf(_perspective)) {
             //  just for perspective
             nativeTransform3d = presentationTransform;
         }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2ad05e5a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index 7917d7f..bd2c868 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -85,6 +85,7 @@
 
 - (void)animationDidStart:(CAAnimation *)anim
 {
+    [self applyTransform];
 }
 
 -(void)applyTransform
@@ -118,7 +119,10 @@
         return;
     }
     
-    [self applyTransform];
+    float perspective = _animationInfo.target->_perspective;
+    if (!isinf(perspective)) {
+        [self applyTransform];
+    }
     
     if ([_animationInfo.propertyName hasPrefix:@"bounds.size"]) {
         /*


[3/6] incubator-weex git commit: * [ios] comment about none value @nodanger

Posted by ac...@apache.org.
* [ios] comment about none value @nodanger


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

Branch: refs/heads/0.16-dev
Commit: 53e96f54f657bd16c3d532ac558013e459a01fb6
Parents: 2ad05e5
Author: acton393 <zh...@gmail.com>
Authored: Wed Jul 26 16:33:55 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Wed Jul 26 16:33:55 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/53e96f54/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 31385de..8f086d4 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
@@ -170,6 +170,7 @@ do {\
         _lastBoxShadow = _boxShadow;
     }
     if (styles[@"perspective"]) {
+        // if the perspective is none, treated as 0
         _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
         if (_perspective <= 0) {
             _perspective = CGFLOAT_MAX;
@@ -236,11 +237,12 @@ do {\
     }
     
     if (styles[@"perspective"]) {
+        // if the perspective is none, treated as 0
         _perspective = [WXConvert WXPixelType:styles[@"perspective"] scaleFactor:self.weexInstance.pixelScaleFactor];
         if (_perspective <= 0) {
             _perspective = CGFLOAT_MAX;
         }
-         _transform.perspective = _perspective;
+        _transform.perspective = _perspective;
     }
     
     if (styles[@"visibility"]) {