使用图层蒙版使UIView的部分透明?

时间:2015-05-20 21:08:47

标签: ios swift uiimageview

我有一个UIViewController,背景颜色为红色self.view。我想在屏幕中央放置一个UIImageView。 UIImageView节目覆盖整个屏幕,其背景颜色应为蓝色。当充当面具时,中心应该有一个100 x 100的图像。图像是具有透明和非透明部分的png。使用此图像作为遮罩,背景应通过此png的非透明部分可见。它应该是这样的:

enter image description here

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的中心。图像的非透明部分应该是后面视图的掩模(在这种情况下为红色)。屏幕的其余部分应覆盖蓝色。

修改:Here is the image I use.

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你可以分享你的形象吗?

编辑:

查看演示代码后。你的方法不会一样。他的背景是一张图片。

尝试以下方法:

1-在您的App Delegate中,窗口背景颜色为蓝色。

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!