gpt4 book ai didi

swift - 在 Swift 的另一个 UIView 中使用一个 UIView 作为掩码

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:23 24 4
gpt4 key购买 nike

我正在使用 Swift 在 xCode 上开发应用程序。我的屏幕上有一个动物的图像(导出“backImage”),在这个图像上我有一个 View (导出“coverView”),颜色为黑色,覆盖了整个屏幕。所以到目前为止你还看不到动物图像,因为“coverView”在它前面。然后我有另一个 View (导出“maskView”),它更小,它在大 View “coverView”之上。我想要的是使用这个“maskView”作为掩码,因此通过它看到“backImage”,就像一个窗口。

有没有人能解决这个问题?

这是我的屏幕,我想通过较小的白色 View 看到灰色大 View 后面的女性角色:

enter image description here

最佳答案

您可以从 mask View 中设置 alpha 属性并添加到其他 View 的前面,例如:

let maskView = UIView()
maskView.backgroundColor = UIColor(white: 0, alpha: 0.5) //you can modify this to whatever you need
maskView.frame = CGRect(x: 0, y: 0, width: imageView.frame.width, height: imageView.frame.height)

yourView.addSubview(maskView)

编辑:现在您已经用图片编辑了您的问题,现在我明白了您需要什么,下面是您如何完成它。

func setMask(with hole: CGRect, in view: UIView){

// Create a mutable path and add a rectangle that will be h
let mutablePath = CGMutablePath()
mutablePath.addRect(view.bounds)
mutablePath.addRect(hole)

// Create a shape layer and cut out the intersection
let mask = CAShapeLayer()
mask.path = mutablePath
mask.fillRule = kCAFillRuleEvenOdd

// Add the mask to the view
view.layer.mask = mask

}

使用此功能,您只需拥有一个 View 并创建一个形状,它将成为该 View 中的一个洞,例如:

// Create the view (you can also use a view created in the storyboard)
let newView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height))
newView.backgroundColor = UIColor(white: 0, alpha: 1)

// You can play with these values and find one that fills your need
let rectangularHole = CGRect(x: view.bounds.width*0.3, y: view.bounds.height*0.3, width: view.bounds.width*0.5, height: view.bounds.height*0.5)

// Set the mask in the created view
setMask(with: rectangularHole, in: newView)

关于swift - 在 Swift 的另一个 UIView 中使用一个 UIView 作为掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com