我有一个UIViewController,背景颜色为红色self.view
。我想在屏幕中央放置一个UIImageView。 UIImageView节目覆盖整个屏幕,其背景颜色应为蓝色。当充当面具时,中心应该有一个100 x 100的图像。图像是具有透明和非透明部分的png。使用此图像作为遮罩,背景应通过此png的非透明部分可见。它应该是这样的:
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)
结果如下:
我想要完全相反。图像应该在100 x 100的中心。图像的非透明部分应该是后面视图的掩模(在这种情况下为红色)。屏幕的其余部分应覆盖蓝色。
我该怎么做?
答案 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!