2014-04-25 20 views
7

ios7'de Metin Seti'ni kullanarak bir not düzenleyicisi yapıyorum. Daha önce büyük boyutlu bir işlem için yavaşlatıyor gibi özel boyut NSTextAttachment'ın görüntülenmesi konusunda sorun yaşadım. Görüntüyü ölçekleyerek ve sonra bunları textview'e ekleyerek sorunu çözdüm.Yalnımı iOS 7.0 UITextView gettings terribly slow after adding images to it görüntülerini ölçekledikten sonra textview render herhangi bir gecikme olmadan gayet iyi çalışır.Trafik görünümünün atıfta bulunulan metni çekirdek verilerde saklanır.Kullanılan bir uygulama oturumunda metin görünümü doğru görüntüler görüntüler.Veri verilmiş metnin çekirdek verilere kaydedilmesinden ve tekrar görüntülenmesi için yeniden alındıktan sonra textview, görüntüler iyi görünüyor.Ama uygulamayı öldürdükten ve uygulamayı tekrar çalıştırdıktan sonra. Görüntüler, görüntü kalitesini korumak için aşağıdaki işlevi kullandım ve [[UIScreen sınırları] ölçeği] kullanılan görüntüleri ölçekleyerek 2x boyutuna büyütüldü.iOS 7 UITextView: Uygulamayı yeniden açtıktan sonra 2x alma nstextattachment boyutu

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 

    UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Görüntüleri 1,0 olarak ölçeklendirirseniz görüntüler genişlemez ancak görüntü kalitesi çok kötüdür.

Problemin nerede yattığını düşünüyorum? Sorun, düzen yöneticisinde yatar. Ben ben NSLayoutManager sınıflara ve geçersiz kılma denedi çalıştı gelmiş ne

- (void) drawGlyphsForGlyphRange: (NSRange) glyphsToShow atPoint: (CGPoint) kökenli Gördüğüm eklenti boyutu ne zaman iki katına olmasıdır uygulamanın yeni bir oturumunu çalıştırıyorum. Ek boyutunu kontrol edip yeniden boyutlandırmaya çalışırsam, gecikme tekrar başlar. Bu problem ile oldukça zaman sıkışmış. Herhangi bir öneri çok takdir edilecektir. enter image description here enter image description here

+0

Resmi nasıl saklıyorsunuz? Ölçeklemenin sonucu olarak, orijinal görüntüyü ekte değiştiriyorsunuz ve bir dahaki sefere yeniden ölçeklendiriliyor olabilirsiniz. Uygulamayı üçüncü kez çalıştırdığınızda ne olur? Uygulama, görüntüyü ne zaman ölçeklendirmeyeceğini nasıl biliyor? Uygulamanın görüntüyü ölçeklememesini bilmesi için görüntü ekinde bazı ek özellikler ayarlayabilirsiniz. –

+0

1) NSAttributedString öğesini çekirdek verilerin içinde saklıyorum. – nick28

+0

2) Evet, nedeni olabilir. Uygulama, üçüncü çalıştırmada veya 'dan sonra aynı şekilde davranıyor 3) Diğer sorularımı okuduğumdan, varsayılan NSTextAttachment görüntünün boyutunu sınırlar olarak alır. Bu bana yardımcı oldu Çevresinde bir çalışma yapma ve çözme – nick28

cevap

4

Retina nedeni olabilir mi? Retina ise, saklamadan önce boyutu% 50 azaltmanız gerekebilir. Bunu denersek nasıl: - Bence

//Original Size that you want to store 
CGSize imageSize = CGSizeMake(320.0f, 320.0f); 

//Make the image 50% of the size for retina 
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&([UIScreen mainScreen].scale == 2.0)) { 
    // Retina display 
    imageSize = CGSizeMake(160.0f, 160.0f); 
} 

UIImage * storeImage = [self imageWithImage:self.image scaledToSize:imageSize] 
//TODO: Store this image locally or whatever you want to do. 
2
@interface MMTextAttachment : NSTextAttachment 
{ 
} 
@end 
@implementation MMTextAttachment 
//I want my emoticon has the same size with line's height 
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex NS_AVAILABLE_IOS(7_0) 
{ 
return CGRectMake(0 , 0 , lineFrag.size.height , lineFrag.size.height); 
} 
@end 

bu deneyebilirsiniz.

İlgili konular