【发布时间】:2012-09-16 04:59:49
【问题描述】:
我正在开发一个涉及复杂脚本的教育应用程序,我在其中绘制不同“字母”不同颜色的部分。 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 的边界变化以不同的比例绘制它?
【问题讨论】:
-
尝试推送上下文来解析
invalid context 0x0这样UIGraphicsPushContext(context); -
@Scar...谢谢,已解决的问题 #(1)。至于#(2) 我将使用缓存的 CGLayer 与 UIImage 进行比较...
标签: ios core-animation core-graphics core-text