2016-11-14 8 views
0

나는 트위터 애니메이션 프로젝트를 연습으로한다. 마스크의 배경색을 변경하고 싶지만 윈도우 배경색을 변경하는 이유를 모르겠습니다. 여기 iOS에서 창 배경색을 설정할 때 마스크의 배경색이 변경되는 이유는 무엇입니까?

당신은 또한 마스크 backgroundcolor을 설정할 수 있습니다 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

당신은보기를 마스킹되어 있어야 UIColor 아니라고 마스크를에 추가합니다. I.o.w. self.window?.rootViewController?.view을 마스킹하고 있습니다.

마스크는 스텐실처럼 적용된 레이어의 알파 채널을 사용하여 영역을 잘라냅니다. 그 때문에 self.window?.rootViewController?.view은 적용한 마스크에 따라 '자르기'됩니다. self.window?.rootViewController?.viewself.window 바로 위에 있기 때문에 잘라낸 부분에 self.window이 표시됩니다. backgroundColor가 설정되지 않은 경우 검은 배경이 표시됩니다.이 배경은 Window의 기본 배경색입니다. 나는 이것이 의미가 있기를 바랍니다.

+0

감사합니다. 알아 냈습니다. – ovo

1

이지만 그것은 CGColor 뭔가 같은

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

작동하지 않습니다. 마스크가 사각형으로 바뀌고 배경이 여전히 검정색으로 변합니다. – ovo