我需要什么来屏蔽UIImageView以及如何在Swift 3中完成它?

时间:2016-10-22 07:52:55

标签: ios swift uiimageview mask

我想知道如果我想使用蒙版图像来获取特定形状的UIImageView,我需要什么。根据我的理解,要创建一个蒙版,我需要在白色背景上有一个面具形状全黑的图像。像这样的东西,例如:

Star-shaped mask image

首先,这是否足以塑造图像视图,如果是这样,我如何在Swift 3中完成?我只能找到过时或用Objective-C编写的掩码。我尝试过简单地将上面的图片分配到UIImageView,然后将图片视图分配给我想要塑造的mask的{​​{1}}属性,如下所示:

UIImageView

这没有做任何事情。它只是让self.defaultImageView.mask = self.maskImageView 消失了(两个图像视图都通过故事板添加并使用self.maskImageView属性连接)。我确定我忘了做某事。它不能这么简单。如果有人可以帮助我,我将不胜感激。就像我说的那样,我把两个图像视图放在故事板上的完全相同的位置上。

更新 我第一次尝试在从故事板中删除它后以编程方式设置掩码。

IBOutlet

结果是图像视图已完全消失,不再可见。我在做什么,我忘记了什么或两者兼而有之?

2 个答案:

答案 0 :(得分:13)

与jpg不同,你应该使用支持透明度的png图像。

在Photoshop中,您的图片应该与此类似:

enter image description here

如果您的形状是黑色或白色,则无关紧要。重要的是每个像素的透明度。不透明区域(在这种情况下为黑色)将可见,透明区域将被修剪。

修改

如果您这样做,则不应从故事板创建蒙版视图。它不会成为视图层次结构的一部分。只需以编程方式添加它:

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
}

输出:

enter image description here

Here是一个测试项目,用于说明它是如何运作的。

答案 1 :(得分:0)

此外,如果您正在使用自定义框架/图像并且无法正确显示遮罩,请尝试设置遮罩的内容模式:

maskView.contentMode = .scaleAspectFit