ios - 为什么我在 iOS 上设置窗口背景颜色时蒙版的背景颜色会发生变化?

标签 ios swift window calayer mask

我做一个推特动画项目作为练习。我想改变 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
}

最佳答案

您正在遮盖您添加 mask 的 View 。 I.O.W.您正在屏蔽 self.window?.rootViewController?.view

蒙版,通过使用它所应用到的图层的 Alpha channel ,像模板一样剪切区域。因此,self.window?.rootViewController?.view 将根据您应用的掩码进行“剪切”。因为 self.window?.rootViewController?.view 直接位于 self.window 之上,所以 self.window 将在剪切处可见件。如果未设置 backgroundColor,您将看到黑色背景,这是窗口的默认背景色。我希望这是有道理的。

关于ios - 为什么我在 iOS 上设置窗口背景颜色时蒙版的背景颜色会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583494/

相关文章:

ios - Facebook SDK 3.1 - com.facebook.sdk 使用 [facebook 授权 :permissions] 进行身份验证时出现错误 5

ios - 确定响应者链是否将处理一个 Action

ios - 如何在 Xcode 4.3 中成功使用 BOOL

c++ - WM_INPUT 有缺陷

ios - CocoaPod 已安装但看不到 Swift 代码

swift - 快速以编程方式导航 View Controller

ios - Swift Dispatch Source Timer 没有按计划触发

swift - 无法在 swift 3 中连接到 xmpp 中的套接字

javascript - 为什么下面的js代码不起作用?

javascript - 加载所有 JS 文件时的浏览器事件