我正在研究一个涉及复杂脚本的教育应用程序,其中我绘制了不同'字母'不同颜色的部分。 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
的边界发生了变化?
尝试按上下文来解决'无效上下文0x0'像这样'UIGraphicsPushContext(context);' – Scar
@Scar ...谢谢,这个固定的问题#(1)。至于#(2)我将使用缓存的CGLayer与UIImage进行比较...... – Merk