首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CATiledLayer绘制文本

使用CATiledLayer绘制文本
EN

Stack Overflow用户
提问于 2012-05-10 09:48:06
回答 1查看 802关注 0票数 1

我有一个UIView子类MyTextView,我将它添加到scrollView中,它只有一堆文本,但有时会变得非常长(大约50000像素高)。使用常规的绘制方法,如NSString's drawInRect方法显然不是正确的方法,所以现在我使用CATiledLayer来帮助我绘制文本。不幸的是,没有足够的示例来帮助使用CATiledLayer绘制文本,我想知道是否有人知道如何开始这项任务。

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

(我不想使用UITextView,因为它也是可滚动的-即使我要使用它,我也不希望它是可滚动的,我将它的帧设置为50000像素高,这并不能解决我的问题(请记住,我将把这个视图添加到scrollView中,所以UITextView在scrollView中并不是很有趣)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-10 10:10:28

我不知道CATiledLayer是最好的,但为了让你上手,你可以自己绘制每个磁贴的文本内容。

创建图层并设置代理:

代码语言:javascript
复制
   CATiledLayer *tiledLayer = [CATiledLayer layer];
    tiledLayer.delegate = self;
    tiledLayer.tileSize =  CGSizeMake(768, 1024);
    tiledLayer.levelsOfDetail = 4;
    tiledLayer.levelsOfDetailBias = 2;
//etc.....

然后再来看看普通的CGContext绘图代码:

代码语言:javascript
复制
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

您可以获取用于绘制的平铺矩形和/或比例

代码语言:javascript
复制
CGRect rect = CGContextGetClipBoundingBox(ctx);
CGFloat scale = CGContextGetCTM(ctx).a;

文档中关于设置层代理的一句话:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10526501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档