У меня есть простой переход 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 отклонят мое приложение в статьях, ответственных за эпилептические припадки. Пожалуйста, помогите мне понять, почему анимация никогда не выполняется со временем, а вместо этого вспышка заканчивается!
Добро пожаловать. StackOverflow использует Markdown вместо BBCode. Форматировать в качестве исходного кода, отступ 4 пробела или 1 вкладку. См. Http://stackoverflow.com/editing-help для руководства по формату. – kennytm