Различный цвет между UIColor и CGColor - PullRequest
0 голосов
/ 17 апреля 2020

Я замечаю странное поведение между UIColor и CGColor.

Используя этот код:

let rect = UIView(frame: CGRect(x: 0, y: 0, width: 60, height: 60))
rect.backgroundColor = UIColor(named: "bgStart")
addSubview(rect)

Я получаю цвет, который хотел и создал в активы (251,16,78 | sRGB).

Но с CoreGraphics я получить немного другой цвет, как вы можете видеть на картинке. (Я использую CGGradient, потому что он должен быть градиентным в будущем, когда я смогу получить правильный цвет).

let context = UIGraphicsGetCurrentContext()!
let gradient = CGGradient(colorsSpace: nil, colors: [UIColor(named: "bgStart")!.cgColor,UIColor(named: "bgStart")!.cgColor] as CFArray, locations: [0, 1])!
let rectangle = UIBezierPath(rect: rect)
context.saveGState()
rectangle.addClip()
context.drawLinearGradient(gradient, start: CGPoint(x: rect.size.width, y: 0), end: CGPoint(x: rect.size.width, y: rect.size.height), options: [])
context.restoreGState()

Here the result (1 - UIColor | 2 - CGColor)

1 Ответ

0 голосов
/ 17 апреля 2020

Почему бы не попробовать другой способ:

let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.view.bounds
gradientLayer.colors = [UIColor(named: "bgStart"), UIColor(named: "bgStart")]
self.view.layer.insertSublayer(gradientLayer, at: 0)
...