1

我有一个添加到 a的UIView子类,它只有一堆文本,但有时会很长(大约 50,000 像素高)。使用诸如method 之类的常规绘图方法显然不是正确的方法,所以现在我正在研究如何帮助我绘制文本。不幸的是,没有足够的例子来帮助用 绘制文本,我想知道是否有人知道我如何开始这项任务。MyTextViewscrollViewNSString's drawInRectCATiledLayerCATiledLayer

在 UIScrollView 中绘制非常长的文本时使用CATiledLayer我的最佳选择吗?

(我不想使用 aUITextView因为它也是可滚动的 - 即使我要使用它,我也不希望它是可滚动的,我将它的框架设置为 50,000 像素高,但这并不能解决我的问题(请记住,我会将此视图添加到滚动视图中,因此滚动视图中的 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

你可以得到 tile rect 和/或 scale 来绘图

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

文档中关于设置层委托的一句话:

在 iOS 中,如果图层与 UIView 对象相关联,则必须将此属性设置为拥有该图层的视图。

于 2012-05-10T02:10:27.877 回答