好的,所以我是Objective-c的新手。 (无关紧要,但我很期待快速!:D)我正在尝试创建一个屏幕保护程序插件,它将显示一个GIF动画。
我的第一次尝试是创建NSBitmapImageRep
并从获取NSImageFrameCount
(TIFFRepresentation压缩格式)对象后的表示属性NSImageCurrentFrame
和NSData
中获取各个帧一个NSImage
对象,其中包含来自url的内容。
悲惨地失败了。
我实际上做了第二次尝试,但它没有为gif制作动画。它只显示第一帧。我所做的是创建一个带有url内容的NSImage
,然后在ScreenSaverView drawRect方法中调用drawInRect。
我再次尝试堆叠溢出来寻求帮助。这是我目前的代码:codebin
对于我最近的尝试,我想可能会创建NSImageview
将图像设置为NSImage
,再次使用url中的内容并在ScreenSaverView绘制方法中绘制视图。但这毫无意义,因为我无缘无故地在视图中创建视图。
我现在被困住了,我的问题是: 你如何在ScreenSaverView中播放GIF动画?
答案 0 :(得分:1)
在普通的应用上下文中,您只需在视图层次结构中添加NSImageView
,将其image
设置为从动画gif加载的NSImage
,并确保图像视图& #39; s animates
属性为YES
。将这样的图片视图放在ScreenSaverView
中并简单地在其[self setNeedsDisplay:YES]
方法中调用-animateOneFrame
可能会有效。
当然,您必须正确设置图像视图的框架。要填充其超级视图,应将其设置为超视图的边界,而不是其框架。您还需要设置自动调整遮罩以确保它跟踪超级视图大小的变化,并将超级视图设置为自动调整其子视图(如果它还没有)。您不会覆盖-drawRect:
中的ScreenSaverView
,也绝不会自己调用图片视图-drawRect:
。图像视图将在视图层次结构中自行绘制。