Nip*_*rus 5 macos cocoa core-animation nsimage
我有一个带有 NSImage 的菜单,显示一些信息,当它更新时,我希望新的(更新的)图像淡入。我知道这在 iPhone 上很容易,但这在 OS X 中可能吗?
你可以尝试使用这个。它是用 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
Run Code Online (Sandbox Code Playgroud)
这取决于您的菜单如何显示图像。如果是菜单项本身,那么如果没有大量的黑客技术,这是不可能的。如果您在菜单中使用自定义 NSView,则可以使用两个 NSImageView 并使用视图的 -animator 在它们之间进行交换。
您可以将 imageViewB 的框架与 imageViewA 相匹配(如果尚未匹配),然后通过动画制作器替换子视图:
[[parentView animator] replaceSubview:imageViewA with:imageViewB];
Run Code Online (Sandbox Code Playgroud)
...或从 b 返回 a。
不幸的是, NSImageView 的 -animator 代理不会对 -setImage: 进行动画处理:(没有明显的原因),因此您需要使用两个视图并对交换进行动画处理。
归档时间: |
|
查看次数: |
2589 次 |
最近记录: |