ios - CAShapeLayer mask View

标签 ios xcode mask cashapelayer

我有一个问题。我在网上寻找答案,但我不明白为什么不起作用。我一定是犯了一些我想不通的愚蠢错误。

如果我做:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
    view.backgroundColor = [UIColor blueColor];
    [self.view addSubview:view];

}

它会在屏幕上创建蓝色 View ,但如果我让

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
    view.backgroundColor = [UIColor blueColor];
    [self.view addSubview:view];

    CAShapeLayer * layer = [[CAShapeLayer alloc]init];
    layer.frame = CGRectMake(10, 10, 30, 30);
    layer.fillColor = [[UIColor blackColor] CGColor];

    view.layer.mask = layer;

}

它没有显示任何内容。

如果我理解正确,它应该屏蔽在 (10,10,30,30)?

最佳答案

您需要在 CAShapeLayer 上设置路径:

- (void)viewDidLoad
{
    [super viewDidLoad];


    UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
    view.backgroundColor = [UIColor blueColor];
    [self.view addSubview:view];

    CAShapeLayer * layer = [[CAShapeLayer alloc]init];
    layer.frame = view.bounds;
    layer.fillColor = [[UIColor blackColor] CGColor];

    layer.path = CGPathCreateWithRect(CGRectMake(10, 10, 30, 30), NULL);

    view.layer.mask = layer;
}

关于ios - CAShapeLayer mask View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090038/

相关文章:

ios - 模型类中整数 16、32 和 64 的正确映射类型是什么?

css - 如何将一个容器放在另一个div之上

ios - 如何将父应用程序添加到现有的独立 iMessage 应用程序

iphone - 用于测量 iPad 或手机代码内精确执行时间的代码?

ios - 为什么在从命令行创建 IPA 时我的构建阶段脚本不被执行?

swift - UIScrollView 上的渐变 mask 更新缓慢

javascript - AngularJS 动态改变 ngMask

objective-c - 我的应用程序可以使用多少内存?或者什么是通常的?

objective-c - 如何创建一个生成可移动图像的按钮? iOS 5

ios - 当前位置未显示在 MapView (iOS) 中