흰색에서 그라디언트로 음영 처리 된 원을 그리려합니다. Core Graphics를 사용하고 있습니다. 여기 RGBA 용 CGColorSpace는 어디에 있습니까?
내가 흰색에서 검은 색으로 그라데이션 그립니다 무엇을 가지고 :let colorSpace = CGColorSpaceCreateDeviceRGB();
let colors = [UIColor.white.cgColor, UIColor.black.cgColor] as CFArray;
let locations : [CGFloat] = [0.0, 1.0];
let glowGradient : CGGradient = CGGradient.init(colorsSpace: colorSpace, colors: colors, locations: locations)!;
let ctx = UIGraphicsGetCurrentContext()!;
ctx.drawRadialGradient(glowGradient, startCenter: rectCenter, startRadius: 0, endCenter: rectCenter, endRadius: imageWidthPts/2, options: []);
는 그러나, 나는 화이트에 블랙을 그릴하지 않으을; 나는 흰색에서 투명한 것을 그려보고 싶다.
이렇게하려면 먼저 끝 색을 UIColor.white.cgColor.copy(alpha: 0.0)
(즉, 흰색)으로 변경해 보았습니다.
fatal error: unexpectedly found nil while unwrapping an Optional value
나는이 오류가 지정된 RGB 색 공간 (CGColorSpaceCreateDeviceRGB()
) 외부에있는 컬러로 인해 가정 : 그러나,이 실패했습니다.
해결 방법 지정된 색상 공간을 RGBA와 같은 알파 구성 요소가있는 것으로 변경하는 것 같습니다. 그러나 이러한 색상 공간은 존재하지 않는 것처럼 보입니다! CGColorSpaceCreateDeviceRGB
, CGColorSpaceCreateDeviceCMYK
및 CGColorSpaceCreateDeviceGray
만 있습니다.
그러나 알파 구성 요소가있는 사용 가능한 색상 공간이없는 것은 당연합니다. 문서는 그라디언트의 알파 지원을 명시 적으로 설명합니다. The documentation for CGGradient.init
는 말한다 : 색 공간은 RGBA 색 공간이며 그라데이션 (종료 위치에 대한 시작 위치에 대한 다른 하나)의 두 가지 색상을 사용하려는 경우
는 예를 들어, 사용자가 제공해야
components
의 8 개 값 - 첫 번째 색상은 빨간색, 녹색, 파란색 및 알파 값, 두 번째 색상은 빨간색, 녹색, 파란색 및 알파 값이 뒤 따른다.
이 RGBA 인코딩은 완벽합니다. 그러나 RGBA 색상 공간이 없기 때문에 Core Graphics에게 내가 그런 RGBA 인코딩을 사용한다는 것을 말하는 것은 불가능합니다!
RGBA에는 CGColorSpace
이 있습니까?