背景
我正在尝试使用以下代码使用两个 UIView 创建一个遮罩。
遮蔽有效,但不是我想要的方式,如下图。
我试图让蒙版像图像 A 一样工作,但我在图像 B 中得到蒙版。
问题
如何使用两个 UIView 创建像 Image A 这样的蒙版?
代码
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let redView = UIView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
redView.backgroundColor = .red
view.addSubview(redView)
let maskView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
maskView.backgroundColor = .blue
maskView.layer.cornerRadius = 100
redView.mask = maskView
}
}
Masking 是由支持
UIViews
的较低级别的核心动画层提供的。您需要提供一个 LAYER 作为遮罩,而不是视图。
该层可以是
CGImage
,在这种情况下,图像的 alpha 通道决定了遮罩,或者您可以使用 CAShapeLayer。
对于像你这样的圆形形状,形状层可能是更好的选择。