uiimage при завершении iphone

Есть ли такая вещь, как «загрузка завершена» для изображений в iphone?

Я хочу иметь возможность уничтожить индикатор UIActivity один раз, и изображение будет загружено.

Какова общая наилучшая практика для этого?


person dubbeat    schedule 16.03.2010    source источник


Ответы (2)


Если вы просто хотите отклонить UIActivityIndicatorView после того, как UIImage был загружен и правильно отображен в UIImageView, вы можете попробовать следующее:

- (void)loadImageAtPath:(NSString*)path
{
    // show the indicator
    [_myIndicatorView startAnimating];

    // give UIKit a chance to setup and draw the view hierarchy:
    [self performSelector:@selector(_loadImageAtPath:)
               withObject:path
               afterDelay:0];
}

- (void)_loadImageAtPath:(NSString*)path
{
    // load the image
    _myImageView.image = [UIImage imageWithContentsOfFile:path];

    // force the image to load and decompress now
    _myImageView.image.CGImage

    // image is ready, so we can remove the indicator view
    [_myIndicatorView removeFromSuperview];
}

Должен признаться, я не тестировал приведенный выше код. Пожалуйста, оставьте комментарий, если это работает.

person Nikolai Ruhe    schedule 16.03.2010
comment
Еще раз спасибо. Я попробую реализовать это в ближайшее время и сообщу вам о результатах. - person dubbeat; 16.03.2010

UIImage имеет синхронный API. Это означает, что когда вы создаете (или рисуете) UIImage, он уже загружен и распакован. Это также означает, что вызов метода для создания (или рисования) UIImage может блокироваться столько времени, сколько требуется для загрузки этого изображения.

Если вы хотите выполнять другие действия во время загрузки изображения, вам необходимо загрузить изображение в фоновом потоке, что возможно с помощью Core Graphics C API. UIImage не является потокобезопасным и может использоваться только в основном потоке.

person Nikolai Ruhe    schedule 16.03.2010
comment
Спасибо за ответ Николай. Это довольно интересно, и, если честно, я немного не понял из-за отсутствия у меня опыта o-0 Также все, что я действительно хотел знать, это то, как я могу узнать, когда изображение закончило загрузку, чтобы я мог удалить индикатор UIActivity? Может быть, ответ был в вашем ответе, и я просто не понимаю? :) - person dubbeat; 16.03.2010