使用Swift中另一个视图中的alpha掩盖视图

时间:2014-08-10 02:23:34

标签: swift mask

我一直在努力争取观看时间来弄清楚如何让我的视图被另一个视图中的形状遮挡。基本上我有一个循环倒数计时器,我希望被一个动画圆圈遮挡,当计时器重置时,它会从计时器的中心向上扩展。

我尝试设置timerMask.maskView = timerCircleGrahics,其中timerCircleGraphics是我的计时器动画视图的名称。但是当我测试应用程序时,这给了我非常奇怪的结果。它似乎将视图剪切到我的蒙版视图的矩形边界,而不是在该视图中绘制的边界的alpha。掩模层居中并正确绘制,但我以前从未尝试过这样做,所以我不确定我是否做得对。

这是我的面具形状的类:

class timerBackgroundMask: UIView {
    override func drawRect(rect: CGRect) {
        var ovalPath = UIBezierPath(ovalInRect: CGRectMake(0, 0, 238, 238))
        colorGreen.setFill()
        ovalPath.fill()
    }
}

然后使用IB,我将此蒙版分配给名为timerMask的故事板中手动放置的视图。我现在意识到,通过将timerBackgroundMask类分配给timerMask,我已经以编程方式将子视图添加到我手动放置的Storyboard视图中,但是当我将此视图设置为掩码时,我觉得alpha应该是相同的另一个观点。这是我用来设置掩码的代码

timerCircleGraphics.layer.mask = timerMask.layer

我得到的结果非常奇怪:

enter image description here

红色部分应该是我的timerMask从中心向外部分剪裁的圆圈。您看到的浅绿色圆圈只是计数器的背景视图,但恰好是我的timerBackgroundMask的确切位置和大小供参考。

1 个答案:

答案 0 :(得分:1)

不要打扰创建课程并使用故事板。在代码中直接做,简单的方法:

var ovalPath = UIBezierPath(ovalInRect: CGRectMake(0, 0, 238, 238))
colorGreen.setFill()
ovalPath.fill()
var mask = CAShapeLayer()
mask.path = ovalPath.CGPath
timerCircleGraphics.layer.mask = mask