この回答を使用して、テキストを自分の上に置きますUIImage
(方法2)。問題は、テキストが非常にぼやけて表示され、水平方向と垂直方向の中央に配置されていないことです。動作のスクリーンショットを次に示します。
どうすればこれを修正できますか?
テキストを追加する私のコードは次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
}
NSString *metaScore = _getString([[news objectAtIndex:indexPath.row] objectForKey:@"metaScore"]);
NSString *title = _getString([[news objectAtIndex:indexPath.row] objectForKey:@"title"]);
NSString *releaseDate = _getString([[news objectAtIndex:indexPath.row] objectForKey:@"releaseDate"]);
NSString *type = _getString([[news objectAtIndex:indexPath.row] objectForKey:@"type"]);
NSString *rating = _getString([[news objectAtIndex:indexPath.row] objectForKey:@"rating"]);
[cell.textLabel setLineBreakMode:NSLineBreakByWordWrapping];
cell.textLabel.text = title;
cell.detailTextLabel.numberOfLines = 4;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@\n%@\n%@", releaseDate, type, rating];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(0, 0, 50, 50);
imageView.image = [self addText:[UIImage imageNamed:@"green.png"] text:metaScore];
cell.image = imageView.image;
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
return cell;
}
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
int w = img.size.width;
int h = img.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
char* text= (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
CGContextSelectFont(context, "Arial", 20, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 256, 256, 256, 1);
CGContextShowTextAtPoint(context, 20, 20, text, strlen(text));
CGImageRef imgCombined = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIImage *retImage = [UIImage imageWithCGImage:imgCombined];
CGImageRelease(imgCombined);
return retImage;
}