1

に追加するUIViewサブクラスがあり、テキストがたくさんありますが、非常に長くなることがあります (高さ約 50,000 ピクセル)。methodなどの通常の描画方法を使用するのは明らかに正しい方法ではないため、テキストの描画を支援する方法を検討しています。残念ながら、 でテキストを描画するのに役立つ十分な例がありません。この作業を開始する方法を誰か知っているかどうか疑問に思っています。MyTextViewscrollViewNSString's drawInRectCATiledLayerCATiledLayer

CATiledLayerUIScrollView で非常に長いテキストを描画する場合、最適なオプションを使用していますか?

(これもスクロール可能であるため、使用したくありません-使用したUITextViewとしても、スクロール可能にしたくありません。フレームの高さを50,000ピクセルに設定しましたが、それは解決しません私の問題(このビューをscrollViewに追加することを覚えておいてください。したがって、scrollViewのUITextViewはまったく楽しいものではありません))。

何か案は?

4

1 に答える 1

0

CATiledLayer が最適かどうかはわかりませんが、開始するには、各タイルのテキスト コンテンツを自分で描画できます。

レイヤーを作成し、デリゲートを設定します。

   CATiledLayer *tiledLayer = [CATiledLayer layer];
    tiledLayer.delegate = self;
    tiledLayer.tileSize =  CGSizeMake(768, 1024);
    tiledLayer.levelsOfDetail = 4;
    tiledLayer.levelsOfDetailBias = 2;
//etc.....

次に、通常の CGContext 描画コードに:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

描画用のタイル四角形および/またはスケールを取得できます

CGRect rect = CGContextGetClipBoundingBox(ctx);
CGFloat scale = CGContextGetCTM(ctx).a;

レイヤーデリゲートの設定に関するドキュメントからの一言:

iOS では、レイヤーが UIView オブジェクトに関連付けられている場合、このプロパティをレイヤーを所有するビューに設定する必要があります。

于 2012-05-10T02:10:27.877 に答える