Я думаю, что ваша проблема зависит от того факта, что, поскольку вы выполняете кучу обработки, не возвращая управление обратно в основной цикл, ваш пользовательский интерфейс не обновляется между ними.
Одна из ваших возможностей - определить три метода, каждый из которых выполняет одно преобразование изображения (это также поможет удобочитаемости вашего кода). Затем вы можете вызывать их так, чтобы между вызовами управление потоком возвращалось в основной цикл и обновлялся пользовательский интерфейс.
Например, если вы используете 3 метода convertImage1
, convertImage2
и convertImage3
, вы можете сделать:
[self performSelector:@selector(convertImage1) withObject:nil afterDelay:0];
[self performSelector:@selector(convertImage2) withObject:nil afterDelay:0];
[self performSelector:@selector(convertImage3) withObject:nil afterDelay:0];
Тот же эффект можно получить более чистым способом, если вы используете метод Grand Central Dispatch dispatch_async
для отправки вызова:
dispatch_async(dispatch_get_main_queue(), ^{ [self convertImage1]; });
dispatch_async(dispatch_get_main_queue(), ^{ [self convertImage2]; });
dispatch_async(dispatch_get_main_queue(), ^{ [self convertImage3]; });
Есть много переменных дизайна, которые вы можете настроить здесь; это просто пример, чтобы дать вам представление.