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/06/09 06:22:24 UTC
[03/12] incubator-weex git commit: * [ios] add perspective support
* [ios] add perspective support
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/75008cc4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/75008cc4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/75008cc4
Branch: refs/heads/0.14-dev
Commit: 75008cc485485d280d1df89af693d27c02538417
Parents: d3b7a1c
Author: acton393 <zh...@gmail.com>
Authored: Tue Jun 6 10:40:41 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Tue Jun 6 10:40:41 2017 +0800
----------------------------------------------------------------------
ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h | 1 +
ios/sdk/WeexSDK/Sources/Component/WXTransform.h | 1 +
ios/sdk/WeexSDK/Sources/Component/WXTransform.m | 6 ++++++
ios/sdk/WeexSDK/Sources/Model/WXComponent.m | 3 ++-
ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m | 9 ++++++++-
5 files changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75008cc4/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 ce2e80a..6e5e327 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
+++ b/ios/sdk/WeexSDK/Sources/Component/WXComponent_internal.h
@@ -55,6 +55,7 @@
WXBoxShadow *_lastBoxShadow;
WXBoxShadow *_boxShadow;
+ CGFloat _perspective;
/**
* accessibility support
*/
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75008cc4/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/75008cc4/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 fc15a49..a118c29 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXTransform.m
@@ -60,6 +60,9 @@
_rotateZ = 0.0;
_rotateAngle = 0.0;
+ // default is parallel projection
+ _perspective = CGFLOAT_MAX;
+
[self parseTransform:cssValue];
[self parseTransformOrigin:origin];
}
@@ -232,6 +235,9 @@
}
CATransform3D nativeTransform3d = [self nativeTransformWithView:view];
if (!CATransform3DEqualToTransform(view.layer.transform, nativeTransform3d)){
+ if (_perspective) {
+ nativeTransform3d.m34 = -1.0/_perspective;
+ }
view.layer.transform = nativeTransform3d;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75008cc4/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 173dd14..d66fb43 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.m
@@ -92,6 +92,7 @@
_isViewFrameSyncWithCalculated = YES;
_async = NO;
+ _perspective = CGFLOAT_MAX;
//TODO set indicator style
if ([type isEqualToString:@"indicator"]) {
@@ -472,7 +473,7 @@
{
WXAssertMainThread();
- _transform = [[WXTransform alloc] initWithNativeTransform:transform instance:self.weexInstance];
+ _transform = [[WXTransform alloc] initWithNativeTransform:CATransform3DMakeAffineTransform(transform) instance:self.weexInstance];
if (!CGRectEqualToRect(self.calculatedFrame, CGRectZero)) {
[_transform applyTransformForView:_view];
[_layer setNeedsDisplay];
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75008cc4/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 2a158b1..57428ce 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXComponent+ViewManagement.m
@@ -168,6 +168,10 @@ do {\
if (_boxShadow) {
_lastBoxShadow = _boxShadow;
}
+ if (styles[@"perspective"]) {
+ _perspective = [WXConvert CGFloat:styles[@"perspective"]];
+ _transform.perspective = _perspective;
+ }
}
- (void)_updateViewStyles:(NSDictionary *)styles
@@ -235,9 +239,12 @@ do {\
self.view.hidden = YES;
}
}
-
+ if (styles[@"perspective"]) {
+ _perspective = [WXConvert CGFloat:styles[@"perspective"]];
+ }
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];