메소드 또는 루프 내에서 NSWindow (Mac OS X) 및 UIView (iOS)의 배경색을 설정하는 데 큰 어려움이 있습니다. 배경색을 설정하는 코드는 루프의 마지막 코드 행에만 적용됩니다. i, j, k의 모든 값이 255 일 때 RGB의 적절한 혼합으로 화면이 흰색으로 변합니다. 사전에NSWindow 및 UIView BackgroundColor를 메서드 내 루프 내에서 반복 설정합니다.
`- (void) ChangeColorLoop
{
for (int i=0; i<=255; i++)
for (int j=0; j<=255; j++)
for (int k=0; k<=255; k++)
{
[NSThread sleepForTimeInterval: 0.1];
//NSLog(@"%d, %d, %d", i, j, k);
float red = (float) i/255;
float green = (float) j/255;
float blue = (float) k/255;
float alpha = 1.0f;
UIColor *mixedColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
//BackgroundView.backgroundColor = mixedColor;
[BackgroundView setBackgroundColor:mixedColor];
}
}`
감사합니다,
제리 같은 의견이 주 스레드에서 실행에서 소리
이 방법은 백그라운드 스레드에서 실행 : 당신이 GCD를 사용하는 경우
, 당신의 논리는 같은 것을 할 필요가? –
모르겠지만 게시 한 것처럼 (무효) 대신 (IBAction)을 가정합니다. 단추를 클릭하면이 메서드가 실행되고 실행됩니다. – Jerry