Используйте Layer Mask, чтобы сделать части UIView прозрачными?

У меня есть UIViewController с цветом фона, красным цветом self.view. Я хочу разместить UIImageView в центре экрана. UIImageView показывает весь экран, а его цвет фона должен быть синим. В центре должно быть изображение 100 x 100, когда оно действует как маска. Изображение представляет собой png с прозрачными и непрозрачными частями. Используя это изображение в качестве маски, фон должен быть видимым через непрозрачные части этого png. Он должен выглядеть следующим образом:

enter image description here

Здесь приведена демонстрация того, как это выглядит в приложении.

Вот что я сделал:

self.view.backgroundColor = UIColor.redColor()
let imageView = UIImageView(frame: self.view.frame)
imageView.backgroundColor = UIColor.blueColor()
let maskImage: UIImage = UIImage(named: "twitterIcon")!
mask = CALayer()
mask?.contents = maskImage.CGImage
mask?.contentsGravity = kCAGravityResizeAspect
mask?.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
mask?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
mask?.position = CGPoint(x: imageView.frame.size.width/2, y: imageView.frame.size.height/2)
imageView.layer.mask = mask!
self.imageView = imageView
self.view.addSubview(imageView)

И вот результат:

enter image description here

Я хочу добиться совершенно противоположного. Изображение должно быть в центре размера 100 x 100. Непрозрачная часть изображения должна быть маской, которая должна иметь вид сзади (красный в этом случае). Остальная часть экрана должна быть покрыта синим цветом.

Изменить: Вот изображение, которое я использую.

Как я могу это сделать?

Ответ 1

Можете ли вы поделиться своим изображением?

EDIT:

После просмотра демонстрационного кода. Ваш подход не будет работать одинаково. Его фон - это изображение.

Попробуйте следующее:

1- В приложении Делегат приложения цвет фона окна синий.

self.window?.backgroundColor = UIColor.blueColor()

Замените код следующим образом:

self.view.backgroundColor = UIColor.redColor()
    let maskImage: UIImage = UIImage(named: "twitterIcon")!
    mask = CALayer()
    mask?.contents = maskImage.CGImage
    mask?.contentsGravity = kCAGravityResizeAspect
    mask?.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
    mask?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
    mask?.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height/2)
    self.view.layer.mask = mask!