NSImageView
'da gösterilen görüntüyü değiştirmek istiyorum, ancak bu değişikliği gerçekleştirmek istiyorum. Bunu yapmak için çeşitli yöntemler denedim. Umarım biriniz gerçekten işe yarayabilir. Mac için Cocoa ile çalışıyorum.NSImageView'da içerik anahtarını nasıl canlandırabilirim?
cevap
Görüntüyü depolamak için Çekirdek Animasyon CALayer
'u kullanan kendi özel görünümünüzü uygulayabilirsiniz. Katmanın contents
özelliğini ayarladığınızda, görüntü otomatik olarak eski görüntüden yenisine doğru pürüzsüz hale gelir.
Bildiğim kadarıyla, NSImageView
animasyonlu görüntü değişikliklerini desteklemiyor. Ancak, birincinin üstüne ikinci bir NSImageView
yerleştirebilir ve eskisini gizleyerek ve yenisini göstererek canlandırabilirsiniz. Örneğin: görünümü büyük olduğunu ve 10.5 ve üzeri gerektirebilir
NSImageView *newImageView = [[NSImageView alloc] initWithFrame: [imageView frame]];
[newImageView setImageFrameStyle: [imageView imageFrameStyle]];
// anything else you need to copy properties from the old image view
// ...or unarchive it from a nib
[newImageView setImage: [NSImage imageNamed: @"NSAdvanced"]];
[[imageView superview] addSubview: newImageView
positioned: NSWindowAbove relativeTo: imageView];
[newImageView release];
NSDictionary *fadeIn = [NSDictionary dictionaryWithObjectsAndKeys:
newImageView, NSViewAnimationTargetKey,
NSViewAnimationFadeInEffect, NSViewAnimationEffectKey,
nil];
NSDictionary *fadeOut = [NSDictionary dictionaryWithObjectsAndKeys:
imageView, NSViewAnimationTargetKey,
NSViewAnimationFadeOutEffect, NSViewAnimationEffectKey,
nil];
NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations:
[NSArray arrayWithObjects: fadeOut, fadeIn, nil]];
[animation setAnimationBlockingMode: NSAnimationBlocking];
[animation setDuration: 2.0];
[animation setAnimationCurve: NSAnimationEaseInOut];
[animation startAnimation];
[imageView removeFromSuperview];
imageView = newImageView;
[animation release];
, o zaman donanım hızlandırmalı olmak ve çok daha az CPU kullanacak Core animasyon aynı şeyi yapabilirdi.
newImageView oluşturduktan sonra, böyle bir şey yapmak:[newImageView setAlphaValue: 0];
[newImageView setWantsLayer: YES];
// ...
[self performSelector: @selector(animateNewImageView:) withObject: newImageView afterDelay: 0];
- (void)animateNewImageView:(NSImageView *)newImageView;
{
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration: 2];
[[newImageView animator] setAlphaValue: 1];
[[imageView animator] setAlphaValue: 0];
[NSAnimationContext endGrouping];
}
Sen abortable olmak için yukarıdaki değiştirmeniz gerekir, ama senin için tüm kod yazmak için gitmiyorum :-)
Animasyonu ortada durmaya zorlamak istiyorum; mümkün mü? –
NSAnimationNonblocking veya NSAnimationNonblockingThreaded komutunu kullanırsanız ve NSViewAnimation nesnesine bir yerde bir referans verirseniz, [animasyonu durdurma] özelliğini çağırabilir ve sonra istediğiniz şekilde geri görünümler ekleyebilirsiniz. –
Tamam, bunu yapmaya çalıştım, ama gerçekten garipti. Rob Keniger'ın yöntemini nasıl yapacağını biliyor musun? Bu en basit gözüküyor. –
- 1. Angular'de ngFor'u nasıl canlandırabilirim?
- 2. Bu sekmeyi jquery ile nasıl canlandırabilirim?
- 3. Kullanıcı kaydırdığında Araç Çubuğundaki Görünümleri nasıl canlandırabilirim?
- 4. Bir RecyclerView öğesinin girişini nasıl canlandırabilirim (slaytta)?
- 5. Bir TextView'deki tek tek karakterleri nasıl canlandırabilirim?
- 6. Animasyon kendi sırasını bitirdiğinde öğeyi nasıl canlandırabilirim
- 7. İki PNG görüntüsü arasında UIButton'u nasıl canlandırabilirim?
- 8. Winst'te dairesel bir yoldaki metni nasıl canlandırabilirim?
- 9. Bu dizinin anahtarını nasıl tanımlarım?
- 10. UIViewController push'teki UINavigationBar arka plan değişikliğini nasıl canlandırabilirim?
- 11. Görüntünün veya görüntünün hareketini eğri yol boyunca nasıl canlandırabilirim?
- 12. UIScrollView kullanarak bir CorePlot çizim alanını nasıl canlandırabilirim?
- 13. Kapsayıcı görünüm denetleyicisine eklerken/çıkarırken alt görünüm denetleyicilerini nasıl canlandırabilirim?
- 14. Özellik anahtarını kurtar/değeri
- 15. Vim imleci, arabellek anahtarını
- 16. Bir web sayfasının genel anahtarını nasıl alabilirim?
- 17. XML RSA anahtarını PEM dosyasına nasıl dönüştürebilirim?
- 18. Cassandra'da düşük kardinalite bölüm anahtarını nasıl önleyebilirim?
- 19. , kısmi eşlemeyi kullanarak önbellek anahtarını nasıl silebilir
- 20. Gitlab'de SSH anahtarını nasıl ekleyebilirim? İşte
- 21. Unicode dize anahtarını Javascript nesnesinde nasıl kullanabilirim?
- 22. MPMoviePlayerController'ın ses kapatma anahtarını nasıl yok edeceği
- 23. RSA ortak anahtarını RSA DER
- 24. Api anahtarını raylarda3 nerede saklamalıyım?
- 25. RSA Özel Anahtarını Kaydetme Android
- 26. İçerik AsyncTask'a nasıl geçilir?
- 27. Niçin gönüllü olmayan bir içerik anahtarı saniyede?
- 28. sayfadaki anahtarını girin, ancak textarea
- 29. NSMutableDictionary'da NSIndexPath anahtarını kullanan sorunlar?
- 30. TortoiseGit yanlış SSH anahtarını kullanarak
Bu kulağa hoş geliyor. Bunu nasıl yaparım? –