Я создаю приложение для фильтрации изображений, в основном у вас есть изображение, отображаемое на контроллере представления, и несколько различных фильтров изображения внизу; нажатие на один будет влиять на яркость основного изображения (например). Я заметил, что применение фильтра занимает больше времени на изображениях с более высоким разрешением, поэтому я думал о создании обработчика завершения (это первый раз, когда я делаю это завершение) и отображать «индикатор индикатора активности» в центре диспетчера представлений для уведомления пользователь, который его работы ... так что ниже является функ (в классе ImageProcessor.swift), который изменяет яркость изображения и отправить обратно CIImage на вид контроллера:Отображение/скрытие индикатора активности в обработчике завершения
func setBrightness(ciImage: CIImage, intensity: Float = 0.5, completion: (CIImage) -> CIImage) -> CIImage? {
let filter = CIFilter(name: "CIColorControls");
filter?.setValue(ciImage, forKey: kCIInputImageKey);
filter?.setValue(intensity, forKey: "inputBrightness");
return completion((filter?.outputImage)!);
}
то это, как его называют от ViewController:
case .Brightness:
self.loader.startAnimating();
imgViewFiltered.image = processor.getUIImage(processor.setBrightness(CIImage(image: imgViewFiltered.image!)!, completion: { (let ci) -> CIImage in
dispatch_async(dispatch_get_main_queue()) {
self.loader.stopAnimating();
}
return ci;
})!)
lastUsedFilter = FilterTypes.Brightness;
appliedFilters.updateValue(0.5, forKey: FilterTypes.Brightness)
Проблема:
1st: Я не знаю, правильно ли я использую обработчик завершения с момента его первого раза, поэтому я буду приветствовать некоторые советы.
2nd: индикатор не отображается или не останавливается. приложение просто замерзает в течение нескольких секунд и обратно, что заставило меня подумать, может быть, завершение не выполняет свою работу в фоновом режиме.
спасибо большое за ваше время.
Как вы добавляете индикатор? Программно или через раскадровку? – kye
через раскадровку, ее уже установленный i только startanimation или остановить его. – Maz