iOS 앱을 개발 중입니다. 앱의 기본 색상 (및 상태 표시 줄 색상)은 사용자가 선택할 수 있습니다. 상태 표시 줄의 흰색 또는 검정색 텍스트 색상이 RGB 또는 HEX 색상에서 시작하는 것이 더 나은지 계산할 수있는 함수가 있습니까?상태 표시 줄의 올바른 텍스트 색을 프로그래밍 방식으로 계산하는 방법은 무엇입니까?
0
A
답변
3
다음은 내가하는 일입니다. 요약하면 - 색상의 RGB 값을 가져옵니다. 그런 다음 RGB 값에서 그레이 스케일 값을 계산하십시오. 그런 다음 그레이 스케일을 기반으로 상태 표시 줄 스타일을 선택하십시오.
1 단계 - UIColor
에서 RGB 값을 얻을 : - :
CGFloat gray = 0.299 * red + 0.587 * green + 0.114 * blue;
3 단계 - 상태 표시 줄 스타일을 선택
UIColor *color = // your color
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
CGFloat white;
if ([color getWhite:&white alpha:&alpha]) {
red = green = blue = white;
} else {
NSLog(@"Uh oh, not RGB or grayscale");
}
}
2 단계 RGB 값에서 회색 값을 계산 :
UIStatusBarStyle style = gray > 0.6 ? UIStatusBarStyleDefault : UIStatusBarStyleLightContent;
일반적으로 0.6
의 사용이 작동합니다. 취향에 맞게 조정할 수 있습니다.
0
체크 아웃이 링크 Check if UIColor is dark or bright?
그리고 당신은 같은 것을 사용하여 RGB 값을 찾을 수 있습니다;
const CGFloat *colors = CGColorGetComponents(self.view.backgroundColor.CGColor);
NSLog(@"R:%f G:%f B:%f",colors[0],colors[1],colors[2]);
다음에 따라 원하는 텍스트 색상을 계산하십시오.
그렇다면 앱의 주요 기능을 쓰길 원하십니까? 이와 같은 질문을하는 데는 아무 문제가 없지만 다음 번에 시도 할 수있는 코드 스 니펫을 제공해주십시오. – ArtSabintsev
나는 그것을 요구하지 않고있다. @ 머디가 내 질문에 완벽하게 물었다. – fustalol
제 사과 - 귀하의 질문에 대한 표현이 나 혼란 스러울 수 있습니다. 다행스럽게 대답을 얻었습니다! 행운을 빕니다! – ArtSabintsev