如何在屏幕保护程序插件中显示动画gif?

时间:2014-06-29 01:30:51

标签: objective-c macos animated-gif screensaver

好的,所以我是Objective-c的新手。 (无关紧要,但我很期待快速!:D)我正在尝试创建一个屏幕保护程序插件,它将显示一个GIF动画。

我的第一次尝试是创建NSBitmapImageRep并从获取NSImageFrameCount(TIFFRepresentation压缩格式)对象后的表示属性NSImageCurrentFrameNSData中获取各个帧一个NSImage对象,其中包含来自url的内容。

悲惨地失败了。

我实际上做了第二次尝试,但它没有为gif制作动画。它只显示第一帧。我所做的是创建一个带有url内容的NSImage,然后在ScreenSaverView drawRect方法中调用drawInRect。

我再次尝试堆叠溢出来寻求帮助。这是我目前的代码:codebin

对于我最近的尝试,我想可能会创建NSImageview将图像设置为NSImage,再次使用url中的内容并在ScreenSaverView绘制方法中绘制视图。但这毫无意义,因为我无缘无故地在视图中创建视图。

我现在被困住了,我的问题是: 你如何在ScreenSaverView中播放GIF动画?

1 个答案:

答案 0 :(得分:1)

在普通的应用上下文中,您只需在视图层次结构中添加NSImageView,将其image设置为从动画gif加载的NSImage,并确保图像视图& #39; s animates属性为YES。将这样的图片视图放在ScreenSaverView中并简单地在其[self setNeedsDisplay:YES]方法中调用-animateOneFrame可能会有效。

当然,您必须正确设置图像视图的框架。要填充其超级视图,应将其设置为超视图的边界,而不是其框架。您还需要设置自动调整遮罩以确保它跟踪超级视图大小的变化,并将超级视图设置为自动调整其子视图(如果它还没有)。您不会覆盖-drawRect:中的ScreenSaverView,也绝不会自己调用图片视图-drawRect:。图像视图将在视图层次结构中自行绘制。

相关问题