Есть ли такая вещь, как «загрузка завершена» для изображений в iphone?
Я хочу иметь возможность уничтожить индикатор UIActivity один раз, и изображение будет загружено.
Какова общая наилучшая практика для этого?
Есть ли такая вещь, как «загрузка завершена» для изображений в iphone?
Я хочу иметь возможность уничтожить индикатор UIActivity один раз, и изображение будет загружено.
Какова общая наилучшая практика для этого?
Если вы просто хотите отклонить 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];
}
Должен признаться, я не тестировал приведенный выше код. Пожалуйста, оставьте комментарий, если это работает.
UIImage
имеет синхронный API. Это означает, что когда вы создаете (или рисуете) UIImage
, он уже загружен и распакован. Это также означает, что вызов метода для создания (или рисования) UIImage
может блокироваться столько времени, сколько требуется для загрузки этого изображения.
Если вы хотите выполнять другие действия во время загрузки изображения, вам необходимо загрузить изображение в фоновом потоке, что возможно с помощью Core Graphics C API. UIImage
не является потокобезопасным и может использоваться только в основном потоке.