gpt4 book ai didi

ios - 为什么在 CATextLayer 上将 isOpaque 设置为 true 会使背景变黑?

转载 作者:行者123 更新时间:2023-11-29 05:43:53 46 4
gpt4 key购买 nike

我正在尝试减少混合层的数量以提高性能。我使用 CATextLayer 来显示一些标签。我用 foregroundColor 设置文本颜色属性和背景颜色通过backgroundColor

问题是当我设置 isOpaque 时至 true无论什么 backgroundProperty 图层的背景颜色都会变成黑色是。

有人可以解释一下这里发生了什么以及如何在设置 isOpaque 时保持背景颜色吗?至 true

这里是重现该问题的 Swift Playground 代码:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
override func loadView() {
let view = UIView()
view.backgroundColor = .white

let label = CATextLayer()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 50)
label.string = "My label"
label.foregroundColor = UIColor.gray.cgColor
label.backgroundColor = UIColor.orange.cgColor
label.isOpaque = true

view.layer.addSublayer(label)
self.view = view
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

结果(我希望 textLayer 的背景为橙色,但如您所见,它是黑色的):

enter image description here

最佳答案

标题中的注释很清楚:

/* A hint marking that the layer contents provided by -drawInContext:
* is completely opaque. Defaults to NO. Note that this does not affect
* the interpretation of the `contents' property directly. */

通过将 isOpaque 设置为 true,您将告诉 Core Animation 内容是不透明的,不需要 Alpha channel 。只是不要将该属性设置为 true

关于ios - 为什么在 CATextLayer 上将 isOpaque 设置为 true 会使背景变黑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56327304/

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