Jak podklasować NSTextAttachment?
Oto mój problem:
Używam danych podstawowych do przechowywania tekstu w formacie RTF z aplikacji iOS i / lub OS X i chciałbym, aby obrazy wklejono do NSTextView lub UITextView, aby: a) zachować ich oryginalną rozdzielczość, oraz b) na wyświetlaczu, aby być skalowanym w celu poprawnego dopasowania tekstu, co oznacza skalowanie w oparciu o rozmiar widoku na urządzeniu.
Obecnie używam- (void)textStorage:(NSTextStorage *)textStorage didProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta
poszukać załączników, a następnie wygenerować obraz ze współczynnikiem skali i przypisać go do atrybutu textAttachment.image.
Ten rodzaj działa, ponieważ po prostu zmieniam współczynnik skali, a oryginalny obraz zostaje zachowany, ale uważam, że bardziej eleganckim rozwiązaniem byłoby użycie podklasy NSTextAttachmentContainer i zwrócenie z tego CGREct o odpowiednim rozmiarze
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex
Moje pytanie brzmi: jak utworzyć i wstawić taką podklasę?
Czy używam textStorage: didProcessEditing do iteracji każdego załącznika i zamiany jego NSTextAttachmentContainer na własną klasę, czy też mogę po prostu utworzyć kategorię, a następnie jakoś użyć tej kategorii do zmiany domyślnego zachowania. Ta ostatnia wydaje się znacznie mniej inwazyjna, ale jak mogę uzyskać, aby moje wyświetlanie tekstu automatycznie korzystało z tej kategorii?
Ups: Właśnie zauważyłem, że NSTextAttachmentContainer jest protokołem, więc zakładam, że utworzenie kategorii na NSTextAttachment i nadpisanie powyższej metody jest opcją.
Mmm: nie można użyć kategorii, aby przesłonić istniejącą metodę klasy, więc sądzę, że podklasa jest jedyną opcją, w którym przypadku, w jaki sposób uzyskać UITextView, aby użyć mojej podklasy załączników, czy muszę iterować przez atrybut attitedString, aby zastąpić wszystkie NSTextAttachments instancje MYTextAttachment. Jaki wpływ będzie miało odarchiwizowanie tego ciągu na OS X, aby powiedzieć domyślny OS X NSTextAttachment (który różni się od klasy iOS)?