我想知道如果我想用一个蒙版图像把我的UIImageView
变成一个特定的形状,我需要什么。根据我的理解,要创建一个蒙版,我需要一个在白色背景上全黑的蒙版形状的图像。例如:
首先,这是否足以形成一个图像视图,如果是,我该如何在Swift 3中进行?我只能找到过时的或用Objective-C编写的屏蔽代码。我尝试简单地将上面的图像分配给一个UIImageView
然后将图像视图分配给我想要塑造的mask
的UIImageView
属性,如:
self.defaultImageView.mask = self.maskImageView
这没什么作用。它只是使
self.maskImageView
消失(图像视图都是通过故事板添加的,并使用IBOutlet
属性连接)。我肯定我忘了做点什么。不能这么简单。如果有人能帮我,我会很感激的。如我所说,我把两个图像视图放在故事板中完全相同的位置,在彼此之上。更新:
从故事板中删除后,我第一次尝试以编程方式设置遮罩。
let layer:CALayer = CALayer()
let mask:UIImage = UIImage(named: "Black-Star-Photographic-Agency")!
layer.contents = mask
layer.frame = CGRect(x: 0, y: 0, width: ((self.defaultImageView.image?.size.width)!), height: (self.defaultImageView.image?.size.height)!)
self.defaultImageView.layer.mask = layer
self.defaultImageView.layer.masksToBounds = true
结果是图像视图完全消失,不再可见。我是在做什么,我是在忘记什么,还是两者都忘了?
最佳答案:
您应该使用PNG图像,它支持透明度,而不是JPG。
在Photoshop中,您的图像应该类似于此:
不管你的体型是黑色还是白色。重要的是每个像素的透明度。不透明区域(本例中为黑色)将可见,透明区域将被修剪。
编辑:
如果这样做,则不应该从故事板创建遮罩视图。它不会成为视图层次结构的一部分。只需按如下程序添加:
let maskView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
maskView.image = UIImage(named: "mask")
imageView.mask = maskView
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
maskView.frame = imageView.bounds
}
输出:
Here是一个测试项目,展示它的工作原理。