색상에 대해서는 0xAABBCC
값을 사용하십시오.
__HEX__ & 0xFF0000
수율 0xAA0000
. 0xAA0000 >> 16
은 0xAA
을 산출한다. 0xAA/255.0
은 0.6667
을 산출한다. +colorWithRed:green:blue:alpha:
이 (가) 찾고있는 값 범위 내에 있습니다.
__HEX__ & 0xFF00
은 0xBB00
이다. 0xBB00 >> 8
은 0xBB
을 산출한다. 0xBB/255.0
은 0.7333
을 산출한다. +colorWithRed:green:blue:alpha:
이 (가) 찾고있는 값 범위 내에 있습니다.
__HEX__ & 0xFF
수율 0xCC
. 0xCC/255.0
은 0.8
을 산출한다. +colorWithRed:green:blue:alpha:
이 (가) 찾고있는 값 범위 내에 있습니다.
당신은 맞습니다. 틀렸어. 일을 간단하게하기 위해, 난 그냥 원시 예상 사용 UIColorFromRGB(0xAABBCC, 0.6)
같은 것 값
#define UIColorFromRGB(__HEX__, __A__) [UIColor \
colorWithRed:((CGFloat)(((__HEX__) & 0xFF0000) >> 16))/255.0 \
green:((CGFloat)(((__HEX__) & 0xFF00) >> 8))/255.0 \
blue:((CGFloat)((__HEX__) & 0xFF))/255.0 alpha:(CGFloat)(__A__)]
을 사용,이 알파는 0xAABBCC
색상 60 %는 불투명 할 것입니다.
참고
난 항상 괄호 안에 매크로 인수를 마무리. 이는 특정 유형의 구문 또는 논리 오류를 방지합니다.
+colorWithRed:green:blue:alpha:
은 CGFloat
이 아니며 float
입니다.
UPDATE
자세한 설명은 약 비트 이동을 요청했다. 그래서 여기에 간다.
0x32241608
는
0x1600
는 16 비트 값이며,
0x08
는 8 비트 수이다
0x240000
는 24이지만 번호이며, I는 그것이
0x32000000
표시하는 내장 된 번호가 32 비트 수이다.
0x32241608 >> 8
수율 0x322416
. 숫자의 8 비트 부분을 잘라내는 것으로 생각할 수 있습니다.
0x32241608 >> 16
수율 0x3224
. 숫자의 16 비트 부분을 잘라내는 것으로 생각할 수 있습니다.
0x32241608 >> 24
수율 0x32
. 번호의 24 비트 부분을 잘라내는 것으로 생각할 수 있습니다.
0x32241608 >> 32
수율 0x0
. 번호의 32 비트 부분을 잘라내어 전체 숫자를 잘라내는 것으로 생각할 수 있습니다.
설명으로 돌아 가기. 빨간색 값을 얻으려면 녹색 및 파란색 값의 16 비트를 잘라야합니다. 녹색 값을 얻으려면 파란색 값의 8 비트를 잘라야합니다.
이렇게하면 비트 이동이 해제되기를 바랍니다.
예, 저자의 마지막 부분에 문제가있는 것 같습니다. 그렇지만'(someNumber & 0xF0000) >> 16 '과 같은 것들은 모든 프로그래머가 이해해야 만하는 기본적인 비트 지향 Boolean 로직입니다. 부울 표현식에 대한 자습서를 찾아 연구하십시오. –