Objective-C에서 임의의 색상 16 진수를 어떻게 생성합니까?Objective-C에서 임의의 색상 칸을 생성 하시겠습니까?
색상 16 진수가 필요합니다. 임의의 색상이 필요하지 않습니다. 이 화면 보호기를 작성하는 (코드 예제 포함) cocoadev에 관한 기사가있다
Objective-C에서 임의의 색상 16 진수를 어떻게 생성합니까?Objective-C에서 임의의 색상 칸을 생성 하시겠습니까?
색상 16 진수가 필요합니다. 임의의 색상이 필요하지 않습니다. 이 화면 보호기를 작성하는 (코드 예제 포함) cocoadev에 관한 기사가있다
나는 당신을 위해 일해야한다고 생각합니다. Arc4random()은 성능면에서 훨씬 우수합니다 & ... 정확도가 rand()보다 큽니다. Rand()는 사용 전에 시드 (seed)되어야합니다.
// 16777215 is FFFFFF
NSInteger *baseInt = arc4random() % 16777216;
NSString *hex = [NSString stringWithFormat:@"%06X", baseInt];
편집 : 서식 관련 의견에 따라 편집됩니다.
조금만 참고고마워요. –
거의 틀림 없지만'% 06X'가 필요합니다. 그렇지 않으면'# AB'와 같은 색상을 갖게됩니다. – kennytm
#를 포함시킬 필요가 있기 때문에 문자열의 서식을 지정하십시오. –
... 복잡하다 - 임의 색상 :
당신은 표준 C 사용할 수 있습니다 Objective-C 응용 프로그램의 라이브러리 루틴 rand()
. 그런 다음 3 번 호출하여 임의 색상의 빨강, 녹색 및 파랑 채널 각각에 대해 임의의 값을 가져옵니다. 채널이 가질 수있는 최대 값 (일반적으로 256)을 사용하여 mod (%
) 값을 지정해야합니다. 거기에서 NSColor
을 적절하게 구성 할 수 있습니다.
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
NSColor* myColor = [NSColor colorWithCalibratedRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0];
이 NSColor 대신 정수의 수레 걸리기 때문에 더 나은 접근 방식은 처음부터 RAND_MAX에 의해 임의의 값을 분할하는 것입니다 :
float rand_max = RAND_MAX;
float red = rand()/rand_max;
float green = rand()/rand_max;
float blue = rand()/rand_max;
NSColor* myColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:1.0];
이 후자의 코드는 것 같은 코드가 보일 수 있습니다 색상 수를 24 비트 스펙트럼으로 제한하지 마십시오.
: 필요에 따라
, 그것은 당신이 그리 임의의 색상 생성기를 작성 고려해야 할 가능성이 있습니다. (예를 들어, 생성 된 색상의 가시성을 위해 "규칙"을 설정하려는 경우) HSB에서 임의 생성 값을 제한하여 색상 코드를 가져올 필요가있을 수 있습니다.
UIColor/NSColor 또는'# abcdef' 문자열? – kennytm
임의의 색상은 필요하지 않지만 실제로는 색상 16 진수 (색상과 관련이없는 용도)가 필요합니다. –