首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义形状的MPMoviePlayerController

自定义形状的MPMoviePlayerController
EN

Stack Overflow用户
提问于 2014-04-15 18:28:20
回答 1查看 131关注 0票数 0

如何在IOS中实现自定义形状的电影?

我有一个UIBezierPath和一个CAShapeLayer。我想展示那个形状的电影。

我正在寻找像skew - http://i57.tinypic.com/16020ps.jpg这样的效果

我正在使用二维码阅读器,在那里我得到了找到的二维码的边界(UIBezierPath)。我希望能够在二维码上显示视频,以实现AR效果。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-04-15 20:17:34

可以通过在MPMoviePlayerController视图顶部创建遮罩层来执行此操作。

我刚刚通过创建一个简单的单视图项目对此进行了测试。我添加了QuartzCore和MediaPlayer框架。

这是ViewController.m中的代码:

代码语言:javascript
复制
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
#import <MediaPlayer/MediaPlayer.h>


@interface ViewController ()

@property (nonatomic, strong) MPMoviePlayerController *movieController;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"myMovie" ofType:@"mov"];

    NSURL *url = nil;
    if (moviePath != nil) {
        url = [NSURL fileURLWithPath:moviePath];
    }

    self.movieController = [[MPMoviePlayerController alloc] initWithContentURL:url];

    self.movieController.view.frame = CGRectMake(50, 50, 400, 400);
    [self.view addSubview:self.movieController.view];
    [self.movieController play];

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.movieController.view.bounds;

    UIBezierPath* bezierPath = [UIBezierPath bezierPath];
    [bezierPath moveToPoint: CGPointMake(118.81, 189.76)];
    [bezierPath addCurveToPoint: CGPointMake(188.77, 37.51) controlPoint1: CGPointMake(118.81, 189.76) controlPoint2: CGPointMake(138.99, 36.06)];
    [bezierPath addCurveToPoint: CGPointMake(255.06, 158.26) controlPoint1: CGPointMake(238.56, 38.96) controlPoint2: CGPointMake(226.1, 78.56)];
    [bezierPath addCurveToPoint: CGPointMake(369.21, 200.26) controlPoint1: CGPointMake(284.02, 237.96) controlPoint2: CGPointMake(314.4, 134.08)];
    [bezierPath addCurveToPoint: CGPointMake(269.79, 300.02) controlPoint1: CGPointMake(424.02, 266.44) controlPoint2: CGPointMake(319.71, 329.77)];
    [bezierPath addCurveToPoint: CGPointMake(151.95, 300.02) controlPoint1: CGPointMake(219.86, 270.26) controlPoint2: CGPointMake(202.68, 327.08)];
    [bezierPath addCurveToPoint: CGPointMake(15.71, 284.27) controlPoint1: CGPointMake(101.22, 272.95) controlPoint2: CGPointMake(-0.1, 369.78)];
    [bezierPath addCurveToPoint: CGPointMake(118.81, 189.76) controlPoint1: CGPointMake(31.51, 198.75) controlPoint2: CGPointMake(118.81, 189.76)];
    [bezierPath closePath];

    maskLayer.fillColor = [[UIColor whiteColor] CGColor];
    maskLayer.backgroundColor = [[UIColor clearColor] CGColor];
    maskLayer.path = [bezierPath CGPath];


    self.movieController.view.layer.mask = maskLayer;

}

@end

(贝塞尔曲线路径是在PaintCode中快速创建的帽子形状,因此有点奇怪。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23081046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档