UIView 掩码未使用 Swift 在 iOS 上按预期显示

问题描述 投票:0回答:1

背景

我正在尝试使用以下代码使用两个 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
        
    }

}

图片

ios swift optimization uiview mask
1个回答
0
投票

Masking 是由支持

UIViews
的较低级别的核心动画层提供的。您需要提供一个 LAYER 作为遮罩,而不是视图。

该层可以是

CGImage
,在这种情况下,图像的 alpha 通道决定了遮罩,或者您可以使用 CAShapeLayer。

对于像你这样的圆形形状,形状层可能是更好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.