cxfeng1 closed pull request #1447: [WEEX-574][iOS] make 'video' and 'videoplus'
support border radius
URL: https://github.com/apache/incubator-weex/pull/1447
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXVideoComponent.m
b/ios/sdk/WeexSDK/Sources/Component/WXVideoComponent.m
index c6b955e0bf..483f838c19 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXVideoComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXVideoComponent.m
@@ -320,19 +320,20 @@ - (instancetype)initWithRef:(NSString *)ref
type:(NSString *)type styles:(NSDict
return self;
}
--(UIView *)loadView
+- (UIView *)loadView
{
WXVideoView* videoView = [[WXVideoView alloc] init];
videoView.weexSDKInstance = self.weexInstance;
-
return videoView;
}
--(void)viewDidLoad
+- (void)viewDidLoad
{
_videoView = (WXVideoView *)self.view;
+ _videoView.layer.mask = [self drawBorderRadiusMaskLayer:_videoView.bounds];
[_videoView setURL:_videoURL];
[_videoView setPosterURL:_posterURL];
+
__weak __typeof__(self) weakSelf = self;
_videoView.posterClickHandle = ^{
[weakSelf.videoView play];
diff --git a/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
b/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
index 2588a1a9f3..2523bf898b 100644
--- a/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
+++ b/ios/sdk/WeexSDK/Sources/Display/WXComponent+Display.m
@@ -569,6 +569,22 @@ - (BOOL)_bitmapOpaqueWithSize:(CGSize)size
return (!hasBorderRadius) && _opacity == 1.0 &&
CGColorGetAlpha(_backgroundColor.CGColor) == 1.0 && [self _needsDrawBorder];
}
+- (CAShapeLayer *)drawBorderRadiusMaskLayer:(CGRect)rect
+{
+ if ([self hasBorderRadiusMaskLayer]) {
+ UIBezierPath *bezierPath = [UIBezierPath
wx_bezierPathWithRoundedRect:rect topLeft:_borderTopLeftRadius
topRight:_borderTopRightRadius bottomLeft:_borderBottomLeftRadius
bottomRight:_borderBottomLeftRadius];
+ CAShapeLayer *maskLayer = [CAShapeLayer layer];
+ maskLayer.path = bezierPath.CGPath;
+ return maskLayer;
+ }
+ return nil;
+}
+
+- (BOOL)hasBorderRadiusMaskLayer
+{
+ return _borderTopLeftRadius > 0.001 || _borderTopRightRadius > 0.001 ||
_borderBottomLeftRadius > 0.001 || _borderBottomLeftRadius > 0.001;
+}
+
#pragma mark - Deprecated
- (WXDisplayBlock)displayBlock
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXComponent.h
b/ios/sdk/WeexSDK/Sources/Model/WXComponent.h
index 937d486e98..1799e07942 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXComponent.h
+++ b/ios/sdk/WeexSDK/Sources/Model/WXComponent.h
@@ -405,6 +405,14 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (UIImage *)endDrawContext:(CGContextRef)context;
+/**
+ * @abstract Return a shapelayer when compoent need border radius.(Especially
video components)
+ *
+ * @discussion You can add this shadelayer to your view.layer attached to
component.
+ *
+ */
+- (CAShapeLayer *)drawBorderRadiusMaskLayer:(CGRect)rect;
+
///--------------------------------------
/// @name Data Binding
///--------------------------------------
@@ -438,7 +446,6 @@ typedef void(^WXDisplayCompletionBlock)(CALayer *layer,
BOOL finished);
*/
- (WXDisplayCompletionBlock)displayCompletionBlock
DEPRECATED_MSG_ATTRIBUTE("use didFinishDrawingLayer: method instead.");
-
@end
@interface UIView (WXComponent)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services