在iOS上设置窗口背景颜色时,为什么遮罩的背景颜色会发生变化?

时间:2016-11-14 07:08:07

标签: ios swift window calayer mask

我做一个推特动画项目作为练习。我想更改蒙版的背景颜色,但我不知道为什么要设置窗口背景颜色来改变它。

这是我在AppDelegate中的代码

var mask: CALayer?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    self.mask = CALayer()
    self.mask?.contents = UIImage(named: "twitter")?.cgImage
    self.mask?.contentsGravity = kCAGravityResizeAspect
    self.mask?.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
    self.mask?.position = self.window!.center

    self.window?.rootViewController?.view.layer.mask = self.mask
    self.window?.backgroundColor = UIColor(red: 18/255, green: 145/255, blue: 242/255, alpha: 1) // Why?

    return true
}

2 个答案:

答案 0 :(得分:1)

您也可以为backgroundcolor设置掩码,但它不是UIColor,它应该是CGColor之类的,

  self.window?.rootViewController?.view.layer.mask!.backgroundColor = UIColor(red: 18/255, green: 145/255, blue: 242/255, alpha: 1).CGColor

答案 1 :(得分:1)

您正在屏蔽添加蒙版的视图。 I.o.w.你正在屏蔽self.window?.rootViewController?.view

一个遮罩,通过使用它所应用的图层的alpha通道,像模板一样切出区域。因此,self.window?.rootViewController?.view将会被删除。根据你申请的面具。由于self.window?.rootViewController?.view直接位于self.window之上,因此self.window会在切出的部分显示。如果未设置backgroundColor,您将看到黑色背景,这是Window的默认背景颜色。我希望这是有道理的。