Последующее Q для предотвращения отставания пользовательского интерфейса (IOS) - 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",

но теперь пользовательский интерфейс выровнялся, но внешний вид моей фотобаттона всегда черный ...

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

Спасибо за ваше терпение.

__ _ __ _ __ _ __ _ ___ Обновлено _ __ _ __ _ _

У меня есть 2 viewControllers, A и B.

A является корневым viewController, а B является дочерним viewController A.

В B есть кнопка вызова камеры, чтобы сделать фотографию.

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

Когда я нажимаю новый B (без фотографии) от A,

дела идут гладко.

Но когда есть старый Б с фотографией.

анимация немного застряла, так как я думаю, что следующий код:

- (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 Ответ

0 голосов
/ 26 февраля 2012

Я нашел ответ.

Просто добавьте строку кода, чтобы обновить кнопку.

Для меня это

[self.photoButton setImage:[UIImage imageNamed:@"photoButton.png"] forState:UIControlStateNormal];
NSUInteger p[2] = {1,4};
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:
                              [NSIndexPath indexPathWithIndexes:p length:2]] 
                      withRowAnimation:UITableViewRowAnimationNone];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...