如何在OS X应用程序中更新URL中的图像?

时间:2013-05-14 09:02:04

标签: macos nsimage

我有一些问题。所以我有从PHP更新歌曲名称和图片的代码。歌曲名称工作,也更新但图片不起作用,在PHP文件中所有工作,但在我的项目 - 没有。例如,如何在10秒后从url更新图片。感谢。

-(void)viewWillDraw {

    NSURL *artistImageURL = [NSURL URLWithString:@"http://site.ru/ParseDataField/kiss.php?image"];

    NSImage *artistImage = [[NSImage alloc] initWithContentsOfURL:artistImageURL];

    [dj setImage:artistImage];

    dispatch_queue_t queue = dispatch_get_global_queue(0,0);

    dispatch_async(queue, ^{

    NSError* error = nil;

        NSString* text = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://site.ru/ParseDataField/kiss.php?artist"]

                                               encoding:NSASCIIStringEncoding
                                                   error:&error];

        dispatch_async(dispatch_get_main_queue(), ^{

            [labelName setStringValue:text];


        });
    });
}

1 个答案:

答案 0 :(得分:0)

您应该考虑将此代码置于除-viewWillDraw之外的其他位置。在某些情况下,对于同一NSView,可以多次调用此例程,更重要的是,您需要调用[super viewWillDraw]以确保事物实际绘制正确(如果在视图中绘制了任何内容) )。

对于定期更新(例如每10秒),您应该考虑使用NSTimer来触发下一个对象的检索。

至于为什么没有正确绘制图像的一般问题,您应该考虑将图像检索和绘图代码放在与标签检索和绘图代码相同的结构中。这会在[dj setImage: artistImage]链之外进行viewWillDraw方法调用,这可能会导致一些困难。