Итак, у меня две проблемы, но обе связаны.
Я создал «анимацию», которая перемещает представление прогресса при нажатии кнопки с помощью NSTimer
. Эта анимация работает отлично в первые пару раз, когда нажимается кнопка, но после этого она начинает ускорять процесс, практически пропуская от начального начала цикла NSTimer
до конца цикла NSTimer
. Мне было интересно, слышал ли кто-нибудь об этой проблеме и / или знает решение?
Я создал то же самое в вопросе 1, но в UItableViewCell
, и цикл NSTimer
активируется при нажатии кнопки редактирования. Кнопка редактирования активирует функцию с такими [self.tableView2 setEditing:NO animated:YES];
и NSTimer
scheduledTimerWithInterval
... (анимация просмотра хода выполнения). Проблема в том, что анимация setEdit больше не анимирует, а просто встает на свои места. Еще раз, кто-нибудь знает решение для этого?
Вот код для вопроса 2 (оба кода для вопросов очень похожи, поэтому, если вы можете обнаружить проблему здесь, то, скорее всего, я смогу использовать это решение, чтобы исправить их оба):
-(void)editTable{
[self.tableView2 setEditing:YES animated:YES];
iCount = 8;
iCount2 = 257;
forwardProgress = YES;
animationFlag = YES;
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector:@selector(increaseAmount) userInfo:nil repeats:YES];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(cancelEdit)];
}
-(void)cancelEdit{
[self.tableView2 setEditing:NO animated:YES];
forwardProgress = NO;
animationFlag = YES;
iCount = 38;
iCount2 = 227;
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector:@selector(increaseAmount) userInfo:nil repeats:YES];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editTable)];
}
-(void)increaseAmount{
float max = 38.0f;
float max2 = 257.0f;
float min2 = 227.0f;
float min = 8.0f;
if (animationFlag == YES) {
if (forwardProgress == YES) {
if (iCount <= max) {
iCount++;
// NSLog(@"iCount = %i", iCount);
}
if (iCount2 >= min2) {
iCount2--;
// NSLog(@"iCount2 = %i", iCount2);
}
if (iCount <= max) {
[tableView2 reloadData];
}
if (iCount2 >= min2) {
[tableView2 reloadData];
}
if (iCount == max) {
animationFlag = NO;
}
newFrame = CGRectMake(iCount, 33.0f, iCount2, 11.0f);
[tableView2 reloadData];
}else{
if (iCount >= min) {
iCount--;
NSLog(@"iCount = %i", iCount);
}
if (iCount2 <= max2) {
iCount2++;
NSLog(@"iCount2 = %i", iCount2);
}
newFrame = CGRectMake(iCount, 33.0f, iCount2, 11.0f);
if (iCount >= min) {
[tableView2 reloadData];
}
if (iCount2 <= max2) {
[tableView2 reloadData];
}
if (iCount == min) {
animationFlag = NO;
}
}
}
}