我正在研究一個涉及複雜腳本的教育應用程序,其中我繪製了不同'字母'不同顏色的部分。 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