Получайте обложки альбомов для обновления с URL-адреса каждый раз, когда меняется песня, или каждые несколько секунд, используя Stormy Productions RadioKit
Чтобы научиться кодировать в Objective-C, я создаю приложение для интернет-радио для своей Церкви. Вот в чем проблема... У меня есть обложка альбома, которая загружается на мой веб-сервер каждый раз, когда песня меняется на радиостанции. Обложка альбома всегда имеет одно и то же имя, даже если фактическое изображение меняется. Я купил код для потоковой части моего приложения, чтобы об этом позаботились. Чтобы получить представление о том, как реализован этот код, вы можете загрузить демонстрационную реализацию с веб-сайта производителя. К сожалению, у меня нет способа обновить картинку, которая отображается в приложении при смене песни. Ниже приведен код загрузки обложки альбома (это все в viewDidLoad
метод).
UIImage *albumArt = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.ourchurchwebserver.org/nameof.jpg"]]];
CGSize picSize = CGSizeMake(100, 100);
CGPoint picOrigin = CGPointMake(108, 74);
CGRect picFrame;
picFrame.size = picSize;
picFrame.origin = picOrigin;
ImageEnlarge * imEn =[[ImageEnlarge alloc]initWithFrame:picFrame];
[[imEn internal]setImage:albumArt];
[self.view addSubview:(imEn)];
То, что вы видите, - это код, используемый для обеспечения того, что если пользователь нажимает на изображение, он будет увеличиваться, а если он снова нажимает на него, он возвращается к нормальному размеру. Моя первая идея состояла в том, чтобы создать массив и автоматически переключаться между изображениями (которые имеют один и тот же URL-адрес), но мои знания слишком ограничены, и исследования оказались тщетными!
1 ответ
RadioKit.h
определяет протокол StormysRadioKitDelegate
это включает в себя метод SRKMetaChanged
, Демонстрационный проект предлагает использовать этот метод для запуска запроса на оформление альбома.
Поэтому вы должны добавить что-то подобное в реализацию этого метода. Он отправляет сетевую загрузку в фоновый поток и, когда это сделано, обновляет пользовательский интерфейс в основном потоке.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *albumArtImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.ourchurchwebserver.org/nameof.jpg"]];
dispatch_async(dispatch_get_main_queue(), ^{
UIImage *albumArt = [UIImage imageWithData:albumArtImageData];
self.imageEnlarge.internal.image = albumArt;
});
});