我有一个带有NSImage的菜单显示一些信息,当它更新时,我希望新的(更新的)图像淡入。我知道它在iPhone上很容易,但这在OS X中是否可行? / p>
答案 0 :(得分:3)
这取决于菜单显示图像的方式。如果它是菜单项本身,没有很多hackery这是不可能的。如果您在菜单中使用自定义NSView,那么您可以使用两个NSImageViews并使用视图的-animator在它们之间进行交换。
你将imageViewB的帧与imageViewA匹配(如果还没有),然后通过动画师替换子视图:
[[parentView animator] replaceSubview:imageViewA with:imageViewB];
...或从b回到a。
不幸的是,NSImageView的-animator代理不会动画-setImage :(没有明显的原因)所以你需要使用两个视图并为交换设置动画。
答案 1 :(得分:3)
我认为最有价值的例子之一是ImageTransition。来自iOS世界,至少对我来说很容易理解。 http://developer.apple.com/library/mac/samplecode/ImageTransition/ImageTransition.zip
希望它有所帮助, 保罗
答案 2 :(得分:1)
您可以尝试使用此功能。它是用Swift 4编写的
let transition = CATransition() //create transition
transition.duration = 4 //set duration time in seconds
transition.type = .fade //animation type
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
self.imageView.layer?.add(transition, forKey: nil) //add animation to your imageView's layer
self.imageView.image = NSImage(named: "test_image") //set the image