2016-10-08 2 views
1

저는 현재 (특히 SKLabelNode의 색상) 신속한 UIColor를 비교하려고합니다. 색상이 회색 또는 검은 색일 경우를 제외하고는 모두 잘 작동합니다. 참고 : 또한 내장 색상 만 사용하고 있습니다.검은 색과 회색에 대해서만 잘못된 UIColor를 비교하십시오.

나는 UIColor를 labelNode.color와 labelNode.fontColor (둘 다 똑같이 설정 됨)와 비교해 보았습니다. 및 검정. 나는 colour.description 등을 사용하여 제안하는 게시물을 보았습니다. 또한이 게시물 Issue comparing UIColors in Swift

덧붙여 설명하지만 실제 색상 개체를 비교하지 않으면 Brown도 실패합니다.

하지만 이전 게시물의 답변이 작동하지 않는 것 같습니다. 놀이터 예는 다음과 같습니다.

let checkColor = UIColor.black 

    let label = SKLabelNode(text: "foo") 
    label.fontColor = UIColor.black 
    print(label.fontColor?.description == checkColor.description) 

     let checkColor = UIColor.brown 

    let label = SKLabelNode(text: "foo") 
    label.fontColor = UIColor.brown 
    print(label.fontColor? == checkColor) // this returns 'false' for brown when description isn't used 

아이디어가 있습니까?

내가 이걸 발견 한 유일한 방법은 checkColor 변수를 다른 더미 SKLabelNode에 할당하고 두 fontColor 속성을 서로 비슷하게 비교하는 것입니다.

답변

1

checkColor를 로그하면 UIExtendedGrayColorSpace 유형이고 fontColor 유형은 UIExtendedSRGBColorSpace입니다.

해결 방법은 checkColor 및 RGB 색상을 초기화하는 것입니다 (저는 checkColor를 rgb로 변환하려고했지만 해결책을 찾지 못했습니다). 그래서 여기에 내가 가진 무엇 :

이 놀이터에서 테스트
let checkColor = UIColor.black 
let checkColorRGB = UIColor.init(red: 0, green: 0, blue: 0, alpha: 1) 

let label = SKLabelNode(text: "foo") 
label.fontColor = UIColor.black 
print(label.fontColor == checkColor) 
print(label.fontColor == checkColorRGB) 
print(label.fontColor!) 
print(checkColor) 
print(checkColorRGB) 

, 당신은

사실 두 번째 인쇄 로그 것을 볼 수 있습니다
관련 문제