2015-04-29 12 views
16

Birden çok görüntü karesi ve bir animasyonlu GIF dosyasından dilimlenmiş bir süre içeren bir UIImage var. Görüntüyü bir UIWebView yüklüyse, beklendiği gibi hareketlendirir, ancak bunun yerine UITextView kullanmak istiyorum. Belirgin seçim, çeşitli çizim efektleri elde etmek için özel bir NSLayoutManger ve birçok özel NSAttributedString öznitelikleriyle TextKit'i kullanmaktır. Tek bir UITextView var, NSTextAttachment s satır içi görüntülemek için gereken tüm görüntüler için NSAttributedString vermek istiyorum. Bu animasyonlu UIImages'dan birini yüklediğim zamanlar iyi çalışıyor, çerçeveleriyle animasyon yapmıyorlar. Bunu nasıl başaracağınıza dair bir fikrin var mı? Ben kuramsal seçeneği ile geldim: düzen yöneticisi, arka planlar çizmek ekin pozisyonları bulmak için bu özelliği yineleme gittiğindeTextKit ile UITextView içinde Animasyonlu UIImage

  1. her animasyonlu resim için bir özel tanımlı özellik
  2. ekleyin. Metin görünümüne
  3. Geri arama, animasyonlu görüntü ile UIImageView s oluşturmak bir subview ekleyin ve bunu denemek için henüz startAnimating

diyorlar, ama oldukça hacky var etmek. Daha iyi bir seçenek olup olmadığını merak ediyorum. Özetle

: Fazladan UIImageView nesneler için gerek olmadan bir UIImageNSAttributedString bir iç NSTextAttachment aracılığıyla UITextView bir iç animasyon istiyorum. Bunun daha önce UIWebView ile yapıldığı gerçeğini görmezden gelebilirsiniz. UIImage, şu anda yapılandırdığım animasyonlu kareleri ayarlamak için (images, duration) özelliklere sahiptir. Bunu bir UIImageView'a atarsam, bunu NSTextAttachment olarak ayarlarsam animasyon olmaz.

Herhangi bir geri bildirim için minnettarım. Teşekkürler!

+1

Bu sabah aynı şeyi merak ediyorum. – yellottyellott

+0

UIImage ve UITextView ile çoğaltmaya çalıştığınız Web Görünümünde nasıl göründüğüne dair bir ekran görüntüsü sağlayabilirsiniz. Bu, daha iyi görselleştirmeye yardımcı olacak ve cevaplara yardımcı olacaktır. – pteofil

+0

@pteofil Ekran görüntüsü oluşturamıyorum çünkü resmin hareketli olduğunu bilemezsiniz, sadece statik bir görüntü gibi görünür. Netleştirmek için: UIImageView nesnesinin gerekliliği olmadan bir NSAttributedString * içindeki NSTextAttachment yoluyla bir UITextView içinde bir UIImage canlandırmak istiyorum. Bunun daha önce bir UIWebView ile yapıldığı gerçeğini görmezden gelebilirsiniz. UIImage, şu anda yapılandırdığım animasyonlu kareleri ayarlamak için özelliklere (görüntüler, süre) sahiptir. Bir UIImageView öğesine atarsam, bunu bir NSTextAttachment olarak ayarlarsam animasyon olmaz. – afrederick

cevap

2

Bu davranış UITextViewUIImageView alt görünümlerini kullanarak ekleri görüntülemez çünkü bence. UITextView için eklenen NSTextAttachment s görünümüyle birlikte ve yokken görünüm hiyerarşisini gözlemlediğimde, yeni görünümler göremiyorum (Xcode'taki Hata Ayıklama'yı kullanarak görünüm hiyerarşisini veya [[[UIApplication sharedApplication] keyWindow] recursiveDescription]'u söyleyerek görebilirsiniz). Muhtemelen, UITextView sadece ekleri doğrudan çizer. Bir canlandırılabilir eki içerecek şekilde düşünebiliriz söyledi

, tek yönlü bir UITextView bir subview kendinizi UIImageView animasyonlu oluşturmak tam olarak neresine NSLayoutManager yerler NSTextAttachment ve her UITextView kaydırır kaydırmak etmektir. NSTextAttachment'un dikdörtgeni boundingRectForGlyphRange:inTextContainer: (muhtemelen layoutManager:didCompleteLayoutForTextContainer:atEnd:'da) aracılığıyla NSLayoutManager'dan alabilirsiniz.

+0

Evet, bu benim soruda konuştuğum "teorik seçenek" dir. Oldukça hacky ve bu yaklaşımdan kaçınmak istiyorum çünkü kırılgan olacak ve bu UIImageView'ın alt görünümlerinin bir ton ekstra yönetimini gerektirecek. Kullandığım "UITextView" bir UICollectionViewCell içinde yer alıyor, bu yüzden hücre kendi konumlarını ve yaşam döngüsünü yönetmek zorunda kalacaktı. Başlangıçta araştırma yaptığınızda söylediğim şeyi yaptım: Metin görüntüsünün alt görünümlerini inceledim, bazı görüntü görüntülerini iç içe geçirebileceğim umuyordum, fakat hiç alt görüntü yok, tüm görüntülemeler bir 'CATiledLayer' içinde gerçekleştiriliyor. – afrederick

+0

Metin görünümü bir koleksiyon görünümündeyse, resim görünümlerinin konumlarını ve yaşam döngülerini metin görünümünde yaptığınız gibi yönetmeniz gerekir. UITextView oluşturduğunuzda UIImageView alt görünümlerini oluşturabilir ve bunları didCompleteLayout içine yerleştirebilirsiniz. Metin görünümü bir koleksiyon görünümündeyse, metin görünümünün kaydırma özelliklerini kullanmıyor olduğunuzu varsayardım - durum buysa, resim görünümünü kaydırmak zorunda kalmazsınız. – roop