7

iOS7 でテキスト キットを使用してノート エディターを構築しています。以前、カスタム サイズの NSTextAttachment のレンダリングで問題が発生しました。レンダリングが大幅に遅くなったためです。画像をスケーリングしてからテキストビューに追加することで問題を解決しまし た。それに画像を追加する 画像をスケーリングした後、テキストビューのレンダリングは遅延なく正常に実行されます。テキストビューの属性付きテキストはコアデータに保存されます。アプリケーションの実行中のセッション中、テキストビューは画像を正しく表示します。属性付きテキストをコアデータに保存して取得した後でももう一度テキストビューに表示すると、画像はきれいに見えますが、アプリを強制終了して再度アプリケーションを実行すると、画像は2倍のサイズに拡大されます。画質。

- (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;
}

画像を 1.0 にスケーリングすると、画像は拡大されませんが、画質は非常に悪くなります。

問題はどこにあると思いますか? 問題はレイアウトマネージャーにあります。

私が試し たこと NSLayoutManager をサブクラス化し、 - (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)originをオーバーライド しようとしました。アプリケーションの新しいセッションを実行すると、添付ファイルのサイズが倍増します。添付ファイルのサイズを確認してサイズを変更すると、再びラグが発生し始めます。私はかなりの時間からこの問題に悩まされています。どんな提案でも大歓迎です。ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

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

これを試すことができると思います。

于 2015-03-20T08:45:09.753 に答える