Buduję edytor notatek za pomocą zestawu tekstowego w ios7. Wcześniej miałem problem z renderowaniem niestandardowych rozmiarów NSTextAttachment, ponieważ spowalniało to renderowanie. Rozwiązałem problem przez skalowanie obrazów, a następnie dodawanie ich do podglądu tekstu. Możesz znaleźć moją odpowiedź w iOS 7.0 UITextView gettings terribly slow after adding images to it Po skalowaniu obrazów renderowanie w trybie tekstowym działa dobrze bez żadnych opóźnień. Przypisany tekst z widoku tekstowego jest przechowywany w podstawowych danych. Podczas bieżącej sesji aplikacji widok tekstowy prawidłowo wyświetla obrazy. Nawet po zapisaniu przypisanego tekstu w danych podstawowych i ponownym pobraniu go ponownie do wyświetlenia textview, obrazy wyglądają dobrze. Ale po zabiciu aplikacji i ponownym uruchomieniu aplikacji. Obrazy zostają powiększone do 2x rozmiaru. Podczas skalowania obrazów użyłem następującej funkcji i użyłem [Skali [UIScreen], aby utrzymać jakość obrazu.iOS 7 UITextView: Rozmiar nstextattachment przy pobieraniu 2x po ponownym otwarciu aplikacji
- (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;
}
Jeśli przeskaluje obrazy do wartości 1.0, obrazy nie powiększają się, ale jakość obrazu jest bardzo zła.
Co myślę, gdzie leży problem? Problem leży w Menedżerze układu.
Co Próbowałem Próbowałem instacji NSLayoutManager i nadpisanie metody - (void) drawGlyphsForGlyphRange: (NSRange) glyphsToShow atPoint: (CGPoint) pochodzenie co widzę jest wielkość przywiązanie podwaja się, gdy uruchamianie nowej sesji aplikacji. Jeśli spróbuję sprawdzić rozmiar załącznika i zmienić jego rozmiar. Opóźnienie zaczyna ponownie nadchodzić. Utknąłem z tym problemem od dłuższego czasu. Wszelkie sugestie będą mile widziane.
Jak przechowujesz obraz? Czy jest możliwe, że w wyniku skalowania, które wykonujesz, modyfikujesz oryginalny obraz w załączniku i następnym razem zostanie on skalowany ponownie. Co się stanie, gdy uruchomisz aplikację po raz trzeci? Jak aplikacja wie, kiedy nie skalować obrazu? Być może ustawić dodatkowy atrybut w załączniku obrazu, aby aplikacja wiedziała, że nie skaluje obrazu. –
1) Przechowuję kompletny NSAttributedString wewnątrz podstawowych danych. – nick28
2) Tak, to może być powód. Aplikacja zachowuje się tak samo podczas trzeciego biegu lub po 3) Z tego, co otrzymuję, czytając inne pytania, wynika, że domyślny NSTextAttachment przyjmuje rozmiar obrazu jako jego granicę. To właśnie pomogło mi w wykonanie pracy i jej rozwiązanie – nick28