我正在嘗試在塊的圖像內寫入一個數字。我一直在尋找如何做到這一點,我發現有幾種不同的方式來做到這一點。問題是,他們都沒有工作。我試過this和this,但它們都在導致invalid context 0x0
的聯繫日誌中導致錯誤。任何人都知道可能會導致什麼?編輯:將文本寫入UIImage
我應該提到我試圖實現這一點。我有一個名爲Blok
的類,它擴展NSObject並保存UIImage。該UIImage在另一個課程的drawRect
方法中使用,也是我想要的文本。
這裏就是我初始化圖像:
-(id)initWithType:(NSString*)theType andSymbol:(NSString*)theSymbol {
self = [super init];
if (self) {
image = [[UIImage alloc] init];
type = theType;
symbol = theSymbol;
}
return self;
}
這裏是它獲取設置以後:
-(void)setImage:(UIImage*)theImage {
image = theImage;
image = [self addText:symbol atPoint:CGPointMake(0, 0) withFont:[UIFont fontWithName:@"Helvetica" size:12] ofColor:[UIColor blackColor]];
}
方法調用是由H2CO3給出如下所示的方法,:
- (UIImage *) addText: (NSString *) str atPoint: (CGPoint) point withFont: (UIFont *) font ofColor: (UIColor *) color {
int w = image.size.width;
int h = image.size.height;
// create empty bitmap context
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate (NULL, w, h, 8, w * 4, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextSetInterpolationQuality (ctx, kCGInterpolationHigh);
// draw the image and the text on the bitmap context
CGContextDrawImage (ctx, CGRectMake (0, 0, h, w), image.CGImage);
char *text = (char *)[str cStringUsingEncoding: NSASCIIStringEncoding];
CGContextSetTextDrawingMode (ctx, kCGTextFill);
CGFloat *comp = CGColorGetComponents ([color CGColor]);
CGContextSetRGBFillColor (ctx, comp[0], comp[1], comp[2], comp[3]);
CGContextSelectFont (ctx, [[font fontName] UTF8String], [font pointSize], kCGEncodingMacRoman);
CGContextShowTextAtPoint (ctx, point.x, h - point.y, text, strlen (text));
// get the image as a UIImage and clean up
CGImageRef imageMasked = CGBitmapContextCreateImage (ctx);
UIImage *img = [UIImage imageWithCGImage: imageMasked];
CGContextRelease (ctx);
CGImageRelease (imageMasked);
CGColorSpaceRelease (colorSpace);
return img;
}
我調整了一下,以適應程序。不幸的是,這似乎造成了惡劣訪問錯誤......
好的,這似乎工作。它不喜歡'CGAffineTransform transform = [self transformForOrientation:self.size];',所以我將它與引用它的行一起取出。儘管保留drawImage行。它通過了沒有任何實際問題,但現在我得到了可怕的'EXC_BAD_ACCESS'錯誤> _ <我會接受你的答案,當我可以解決這個錯誤... – RaysonK
何時何地發生錯誤?該錯誤肯定不在我的代碼中,因爲它經過多次測試和使用。我幫你解決這個問題,但你必須提供更多信息。 – 2012-06-01 18:11:45
這就是問題所在,是我無法確定導致錯誤的部分。我經過調試器,它看起來像程序工作正常,但它在後臺代碼(而不是我正在編寫的代碼,但'引擎蓋下'的東西),導致錯誤的命中行。 – RaysonK