打开“Color Offscreen-Render Yellow”时,绿色表示什么

What does green indicate when "Color Offscreen-Rendered Yellow" is turned on

提问人:Yasic 提问时间:11/14/2023 更新时间:11/14/2023 访问量:48

问:

我正在测试由实现圆角的不同方式引起的屏幕外渲染问题。我尝试使用 cornerRadius 和蒙版图层作为实现圆角的两种方法,并且在 Xcode 中启用了“Color Offscreen-Render Yellow”选项。

class MyViewController: UIViewController {
    lazy var view1: UIView = {
        let v = UIView()
        v.layer.cornerRadius = 30
        v.layer.masksToBounds = true
        let red = UIView()
        red.backgroundColor = .red
        v.addSubview(red)
        red.snp.makeConstraints { make in
            make.center.equalToSuperview()
            make.size.equalToSuperview()
        }
        return v
    }()
    
    lazy var view2: UIView = {
        let v = UIView()
        
        let maskLayer = CAShapeLayer()
        maskLayer.path = UIBezierPath(arcCenter: CGPoint(x: 30, y: 30),
                                      radius: 30,
                                      startAngle: 0,
                                      endAngle: 2 * Double.pi,
                                      clockwise: true).cgPath
        maskLayer.fillColor = UIColor.white.cgColor
        v.layer.mask = maskLayer
        
        v.layer.masksToBounds = true
        let red = UIView()
        red.backgroundColor = .red
        v.addSubview(red)
        red.snp.makeConstraints { make in
            make.center.equalToSuperview()
            make.size.equalToSuperview()
        }
        return v
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        
        view.addSubview(view1)
        view.addSubview(view2)
        
        view1.snp.makeConstraints { make in
            make.leading.equalToSuperview().offset(30)
            make.centerY.equalToSuperview()
            make.size.equalTo(CGSize(width: 60, height: 60))
        }
        view2.snp.makeConstraints { make in
            make.trailing.equalToSuperview().inset(30)
            make.centerY.equalToSuperview()
            make.size.equalTo(CGSize(width: 60, height: 60))
        }
    }
}

我发现使用 cornerRadius 设置圆角的视图以绿色突出显示。

enter image description here

我不明白这代表什么,以及为什么屏幕外渲染标志不是通常的黄色。

IOS版 Swift UIKIT

评论

0赞 Sweeper 11/14/2023
无法重现。我看到两者都是黄色的。
0赞 Yasic 11/15/2023
@Sweeper真的吗?您使用的是哪个版本的 Xcode?
0赞 Sweeper 11/15/2023
我正在使用 Xcode 15.0 并在运行 iOS 17.0 的模拟器上进行了测试。
0赞 Yasic 11/15/2023
@Sweeper我也使用 Xcode15。看起来模拟器确实很正常,但是我在两台真机上测试时遇到了这个问题。

答: 暂无答案