2010-02-28 7 views
2

У меня есть простой переход UIView BackgroundColor работает на своем собственном потоке, как например:UIView Animation не задерживается!

- (void)colorLoop_thread { 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

// [self performSelector:@selector(changeColors)]; 
[self performSelectorOnMainThread:@selector(changeColors) withObject:nil waitUntilDone:NO]; 

[pool release]; 
} 

- (void)changeColors { 
if(self.colorStatus == colorBegin) { 
    self.backgroundColor = [self randomColor]; 
    self.colorStatus = colorChanged; 
} 

if(self.colorStatus == colorChanged) { 
    self.colorStatus = colorChanging; 
    [UIView beginAnimations:@"ChangeColor" context:nil]; 
    [UIView setAnimationDuration:2.0f]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(changeColorFinished:finished:context:)]; 
    self.backgroundColor = [self randomColor]; 
    [UIView commitAnimations]; 
} 
[NSTimer scheduledTimerWithTimeInterval:0.033 target:self selector:@selector(changeColors) userInfo:nil repeats:NO]; 
} 

- (void)changeColorFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context { 
if([animationID isEqualToString:@"ChangeColor"]) { 
    self.colorStatus = colorChanged; 
} 
} 

однако ... когда он запускается после инициализации с таким:

colorStatus = colorBegin; 
static BOOL colorThread = NO;if(!colorThread) {colorThread = YES;[NSThread detachNewThreadSelector:@selector(colorLoop_thread) toTarget:self withObject:nil];} 

цвет никогда не меняется с течением времени, анимация проходит, как будто нет никакой задержки, и фон настолько быстро меняется, что AppReviewers отклонят мое приложение в статьях, ответственных за эпилептические припадки. Пожалуйста, помогите мне понять, почему анимация никогда не выполняется со временем, а вместо этого вспышка заканчивается!

+0

Добро пожаловать. StackOverflow использует Markdown вместо BBCode. Форматировать в качестве исходного кода, отступ 4 пробела или 1 вкладку. См. Http://stackoverflow.com/editing-help для руководства по формату. – kennytm

ответ

0

Попробуйте self.layer.backgroundColor = [[self randomColor] CGColor].