0

我正在开发一个涉及复杂脚本的教育应用程序,我在其中绘制不同“字母”不同颜色的部分。 UILabel是不可能的,所以我深入研究了 Core Text,并且在CALayers.

我没有设法做的是为我的自定义绘制文本的大小设置动画。CALayers基本上,我在屏幕上移动的“图块”( ) 上有文字。四处走动是可以的,但现在我想放大用户按下的那些。

我的想法是尝试缓存“全分辨率”图块,然后在图像边界动画期间将其绘制为缩放。到目前为止,我已经尝试通过以下方式绘制和缓存,然后重绘这样的图块:

UIGraphicsBeginImageContext(CGSizeMake(50, 50));
CGContextRef context = UIGraphicsGetCurrentContext();

//do some drawing...

myTextImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

然后在[CALayer drawInContext:(CGContextRef)context],我打电话[myTextImage drawAtPoint:CGPointZero]

当我运行应用程序时,控制台显示<Error>: CGContextDrawImage: invalid context 0x0. context同时,即使在记录了该错误之后, 我也可以完美地继续以相同的方法绘制文本。

所以我有两个问题:(1)为什么这不起作用?我应该CGBitmap改用吗?更重要的是:(2)有没有更聪明的方法来解决整体问题?也许将我的文本存储为路径,然后CAAnimation随着封闭范围的变化以不同的比例绘制它CALayer

4

1 回答 1

0

好吧,这比我想象的要容易得多。只需在 UIView 内的 CALayer 的 drawInContext: 中绘制文本。然后使用 transform 属性为视图设置动画,文本将根据需要收缩或扩展。

只需注意缩放,以免文本变得块状。最简单的方法是确保变换比例因子不超过 1。换句话说,将 UIView 的“默认”1:1 尺寸设为您想要显示的最大尺寸。

于 2012-09-29T00:54:22.790 回答