UI немного застрял с момента получения фото - PullRequest
0 голосов
/ 25 февраля 2012

Теперь я использую этот код, с небольшой модификацией:

if (self._photoPath && !self._photo) {
        dispatch_queue_t bg_thread = dispatch_queue_create("com.yourcompany.bg_thread", NULL);
        dispatch_queue_t main_queue = dispatch_get_main_queue();
        dispatch_async(bg_thread,^{
            NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
            if(data != nil) {
                dispatch_async(main_queue,^{ 
                    self._photo = [UIImage imageWithData:data];
                    [self.photoButton setImage:[UIImage imageNamed:@"photoButton.png"] forState:UIControlStateNormal];
                });
            }
        });

    }

Как вы можете видеть, на самом деле, после того, как я получаю эту фотографию, я хочу немедленно установить ее на свой «photoButton», но теперьUI сглаживается, но внешний вид моей фотобаттона всегда черный ...

Что мне делать дальше?

_______________________ Обновлено ___________________

У меня есть 2 viewControllers, A и B. Aявляется корневым viewController, а B является дочерним viewController.В B есть кнопка для вызова камеры, чтобы сделать снимок.

После того, как пользователь сделал снимок, фотография становится таким же.

Когда я нажимаю новый B (безфото) от А, все идет гладко.Но когда есть старая буква B с фотографией, анимация немного застревает из-за следующего кода:

- (void)viewWillAppear:(BOOL) animated {
    if (self._photoPath && !self._photo) {
            NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
            if(data != nil)
                self._photo = [UIImage imageWithData:data];
    }
    [super viewWillApear];
}

Но мне нужно получить эту фотографию перед отображением видатак как мне нужно установить эту фотографию на фон моего фотоБаттона.

Итак, есть ли способ избежать наложения анимации вида?Потому что это действительно приводит к плохому пользовательскому опыту.

1 Ответ

1 голос
/ 25 февраля 2012

Попробуйте загрузить фотографию в виде темы (я использую GCD здесь):

- (void)viewWillAppear:(BOOL) animated {
    if (self._photoPath && !self._photo) {
      dispatch_queue_t bg_thread = dispatch_queue_create("com.yourcompany.bg_thread", NULL);
      dispatch_queue_t main_queue = dispatch_get_main_queue();
      dispatch_async(bg_thread,^{
          NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
          if(data != nil) {
            dispatch_async(main_queue,^{ self._photo = [UIImage imageWithData:data]; });
          }
      });
    }
    [super viewWillApear];
}
...