Я использую AVCaptureSession для захвата изображения, а затем отправки его на свой сервер.setNeedsDisplay on uiimageview не обновляет представление сразу
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
if (imageSampleBuffer != NULL) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
self.videoImageData = [imageData copy];
[self processImage:[UIImage imageWithData:imageData]];
NSString* response=[self uploadImage];
[activityIndicator removeFromSuperview];
self.takePictureBtn.enabled = YES;
[self setUserMessage:response];
}
}];
- (void) processImage:(UIImage *)image
{
...
[UIView beginAnimations:@"rotate" context:nil];
[UIView setAnimationDuration:0.5];
int degrees = [self rotationDegrees];
CGFloat radians =degrees * M_PI/180.0;
self.captureImageView.transform = CGAffineTransformMakeRotation(radians);
[UIView commitAnimations];
[self.captureImageView setNeedsDisplay];
}
- (NSString*)uploadImage
отправить фотографию на сервер
Поведение Я ожидаю, что после processImage заканчивается, что изображение будет отображаться в UIImageView captureImageView
на нем вращается индикатор активности, но вместо этого я получаю белый blanc с индикатором вращения и только после завершения запроса на сервер captureImageView
отображает изображение
Как я могу достичь желаемого поведения?
Другая проблема я столкнулся в том, что мой imageSampleBuffer возвращает зеркальное отражение принятого одного (объекта слева отображается справа)
что мне нужно сделать, чтобы изменить addBlockWithOperation с причиной я получаю ошибка: неизвестный метод экземпляра для selector 'addBlockWithOperation:'? newbie in distress :( –
Вам нужно переместить код после вызова метода -processImage до конца события, так что на экране появится возможность запуска. Я получил неправильное имя метода, но теперь мой ответ исправлен. сделайте это непосредственно с dispatch_async(). –