【问题标题】:How to mask a UIScrollView?如何屏蔽 UIScrollView?
【发布时间】:2012-08-18 23:46:38
【问题描述】:

我目前有一个图像遮罩,我想用它来遮罩 UIScrollView。 滚动视图包含 1 个 UIImageView。

这是我目前在 viewdidload 中所做的:

CALayer *mask = [CALayer layer];
mask.contents = (id)[UIImage imageNamed:@"ScrollMask.png"].CGImage;
mask.frame = CGRectMake(0, 0, 512, 384);
[Scroll1.layer setMask:mask]; 

这在某种程度上有效。 它掩盖了滚动视图内的 ImageView,但不掩盖滚动视图本身。

有没有办法屏蔽滚动视图的 CALayer 而不是 imageview 的层?

【问题讨论】:

    标签: xcode uiscrollview calayer mask


    【解决方案1】:

    你应该把 UIScrollView 放到 UIView 中,然后将 mask 应用到 UIView 而不是 UIScrollView。

    CALayer *mask = [CALayer layer];
    mask.contents = (id)[UIImage imageNamed:@"ScrollMask.png"].CGImage;
    mask.frame = CGRectMake(0, 0, 512, 384);
    
    UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 512, 384)];
    [containerView.layer setMask:mask];
    
    [containerView addSubview:Scroll1];
    [self.view addSubview:containerView];
    

    【讨论】:

    • 如何将渐变色蒙版应用到容器视图的边界?
    • @Rajesh 引用 Apple 的文档:“图层的 alpha 通道决定了图层的内容和背景有多少可以通过。完全或部分不透明的像素允许底层内容显示,但完全透明的像素会阻止内容。”您所需要的只是一张从不透明到透明渐变的蒙版图像。
    • 请检查这个问题stackoverflow.com/questions/29341637/…。这将解释我的问题。
    猜你喜欢
    • 2011-03-04
    • 2011-08-11
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多