2

为了自学如何用 Objective-C 编码,我正在为我的 Church 创建一个网络广播应用程序。这就是问题所在...每当电台上的歌曲发生变化时,我都会将专辑封面上传到我的网络服务器。即使实际图片发生变化,专辑封面也始终具有相同的名称。我为我的应用程序的流媒体部分购买了代码,以便处理好。要了解此代码是如何实现的,您可以从供应商的网站下载演示实现。不幸的是,当歌曲更改时,我无法刷新应用程序中显示的图片。下面是一些加载专辑封面的代码(这都是在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 地址),但我的知识太有限,研究证明是徒劳的!

4

1 回答 1

1

RadioKit.h定义了一个StormysRadioKitDelegate包含方法的协议SRKMetaChanged。演示项目建议使用这种方法来启动对专辑插图的请求。

所以你应该在这个方法的实现中添加这样的东西。它将网络下载分派到后台线程,完成后更新主线程上的 UI。

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;
    });
});
于 2013-02-14T06:24:57.737 回答