情報を表示する NSImage を含むメニューがあり、更新されたときに新しい (更新された) イメージをフェードインさせたいと思います。iPhone では簡単ですが、OS X でこれは可能ですか?
3 に答える
これを使ってみることができます。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
最も価値のある例の1つはImageTransitionだと思います。少なくとも私にとっては、iOSの世界から来ているので理解するのは簡単です。 http://developer.apple.com/library/mac/samplecode/ImageTransition/ImageTransition.zip
お役に立てば幸い、パオロ
メニューがどのように画像を表示しているかによって異なります。それがメニュー項目自体である場合、これは多くのハッカーなしでは不可能です。メニューでカスタム NSView を使用している場合は、2 つの NSImageView を使用し、ビューの -animator を使用してそれらを切り替えることができます。
imageViewB のフレームを imageViewA に一致させます (まだ一致していない場合)。次に、アニメーターを介してサブビューを置き換えます。
[[parentView animator] replaceSubview:imageViewA with:imageViewB];
... または b から a に戻ります。
残念ながら、NSImageView の -animator プロキシは -setImage: をアニメートしません (明確な理由はありません) ため、2 つのビューを使用してスワップをアニメートする必要があります。