我有一个 NSImage 显示一些信息的菜单,当它更新时,我希望新的(更新的)图像淡入。我知道这在 iPhone 上很容易,但在 OS X 中这可能吗?
问问题
2481 次
3 回答
5
你可以试试用这个。它是用 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
于 2019-01-22T21:05:24.240 回答
4
我认为最有价值的例子之一是 ImageTransition。至少对我来说很容易理解,来自 iOS 世界。 http://developer.apple.com/library/mac/samplecode/ImageTransition/ImageTransition.zip
希望它有帮助,保罗
于 2011-09-14T08:32:41.060 回答
3
这取决于您的菜单如何显示图像。如果它是菜单项本身,那么如果没有很多hackery,这是不可能的。如果您在菜单中使用自定义 NSView,那么您可以使用两个 NSImageView 并使用视图的 -animator 在它们之间进行交换。
如果还没有将 imageViewB 的框架与 imageViewA 匹配,则可以通过动画器替换子视图:
[[parentView animator] replaceSubview:imageViewA with:imageViewB];
...或从 b 回到 a。
不幸的是,NSImageView 的 -animator 代理不会为 -setImage: 设置动画(没有明显的原因),因此您需要使用两个视图并为交换设置动画。
于 2011-02-28T14:42:09.653 回答