2016-11-14 3 views
0

私は練習としてtwitterアニメーションプロジェクトを行います。マスクの背景色を変更したいのですが、ウィンドウの背景色を変更する理由を知りません。ここでiOSでウィンドウの背景色を設定するとマスクの背景色が変わるのはなぜですか?

は、あなたがあるとの見解をマスキングしている私のコードは、あなたがまた、マスクにbackgroundcolorを設定することができますが、それはUIColorではない、それはのようなCGColorなものでなければなりません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 
} 

答えて

1

あなたはマスクを追加します。 I.o.w.あなたはself.window?.rootViewController?.viewをマスキングしています。

マスクは、適用されるレイヤーのアルファチャンネルを使用して、ステンシルのような領域を切り出します。そのため、self.window?.rootViewController?.viewは、適用するマスクに従って「カット」されます。 self.window?.rootViewController?.viewself.windowのすぐ上にあるので、切り出した部分にはself.windowが表示されます。 backgroundColorが設定されていない場合、ウィンドウのデフォルトの背景色である黒の背景が表示されます。私はこれが意味をなさないことを望む。

+0

ありがとう、私は把握します。 – ovo

1

ある

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

これは機能しません。マスクは正方形に変わり、背景はまだ黒です。 – ovo

関連する問題