你或許可以用CGLayer來完成這項工作。
最重要的是,您應該能夠使用您現有的代碼將字符(或其他任何東西)繪製到CGLayer中。
下面是一些粗糙的代碼:
// first, make a CGLayer...
CGLayerRef yourDrawingPad =
CGLayerCreateWithContext(UIGraphicsGetCurrentContext(),etc..
CGContextRef yourRef = CGLayerGetContext(yourDrawingPad);
// now, draw to yourRef .. draw your various typography (or anything)
// use your current drawing code.
// all done drawing, now make an image mask...
UIGraphicsBeginImageContext(CGLayerGetSize(yourDrawingPad));
CGContextRef temp = UIGraphicsGetCurrentContext();
CGContextDrawLayerAtPoint(temp, CGPointZero, yourDrawingPad);
CGImageRef anAlphaMask = CGBitmapContextCreateImage(temp);
UIGraphicsEndImageContext();
你現在有一個很好的面膜,你可以使用:
CGContextSaveGState(UIGraphicsGetCurrentContext()) ...
CGContextClipToMask(UIGraphicsGetCurrentContext(), self.frame, anAlphaMask);
所以只是掩蓋它在一個梯度的圖像,或任何作品。
(可以想象:也許你將不得不建立一個位圖圖像屏幕外,然後用其作爲面罩)
腳註:不要忘了,很可能你將不得不倒掛畫了!幸運的是,這很容易處理。它說:「現在,提請yourRef」繪圖保存你的狀態之前,並添加兩行代碼:
CGContextTranslateCTM(refForMask, 0, self.frame.size.height);
CGContextScaleCTM(refForMask, 1.0, -1.0);
希望它可以幫助
很奇怪。我發佈了一條評論,但缺失。也許我沒有正確添加它。所以這裏再次。我會嘗試兩種方法。謝謝您的幫助。 – Ernesto 2011-02-20 15:02:16