Я пытаюсь уменьшить количество смешанных слоев, чтобы улучшить производительность. Я использую CATextLayer для отображения некоторых меток. Цвет текста устанавливается с помощью свойства foregroundColor
, а цвет фона - через backgroundColor
.
Проблема заключается в том, что когда я устанавливаю isOpaque
в true
, цвет фона слоя становится черным, независимо от того, что backgroundProperty
.
Может кто-нибудь объяснить, что здесь происходит, и как мне сохранить цвет фона при настройке isOpaque
в true
?
Вот быстрый код игровой площадки, чтобы воспроизвести проблему:
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 будет оранжевым, но, как вы можете видеть, черным):