2016-11-14 1 views
0

Ich mache ein Twitter-Animationsprojekt als Übung. Ich möchte die Hintergrundfarbe der Maske ändern, aber ich weiß nicht, warum ich die Fensterhintergrundfarbe einstellen soll, um sie zu ändern.Warum ändert sich die Hintergrundfarbe einer Maske, wenn ich die Fensterhintergrundfarbe auf iOS einstelle?

Hier ist mein Code in 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 
} 

Antwort

1

Sie sein werden, um die Ansicht maskieren, dass Sie fügen die Maske hinzu. I.o.w. Sie maskieren self.window?.rootViewController?.view.

Eine Maske schneidet den Bereich wie eine Schablone aus, indem die Alpha-Kanäle der Ebene verwendet werden, auf die sie angewendet wird. Daher wird self.window?.rootViewController?.view entsprechend der von Ihnen angewendeten Maske "ausgeschnitten". Weil self.window?.rootViewController?.view direkt über self.window ist, wird self.window an den ausgeschnittenen Stücken sichtbar sein. Wenn backgroundColor nicht festgelegt wurde, wird ein schwarzer Hintergrund angezeigt. Dies ist die Standardhintergrundfarbe für das Fenster. Ich hoffe, das ergibt Sinn.

+0

Danke, ich finde es heraus. – ovo

1

Sie backgroundcolor für Maske auch festlegen können, aber es ist nicht UIColor, sollte es CGColor etwas wie

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

Es ist nicht funktionieren. Die Maske wechselt zu einem Quadrat und der Hintergrund ist immer noch schwarz. – ovo

Verwandte Themen