我有一些非常奇怪的打算,我加入字幕到的图像和一切工作正常在模拟器,但设备本身上的字体非常小...
我已经使用这个代码时出现问题:
-(UIImage*) drawTextOnPic:(NSString*) bottomText
inImage:(UIImage*) image
{
UIFont *font = [UIFont boldSystemFontOfSize:48];
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
CGRect = CGRectMake(10.0f,10.0f,image.size.width-20.0f, image.size.height);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow(context, CGSizeMake(2.5f, 2.5f), 5.0f);
[[UIColor whiteColor] set];
[bottomText drawInRect:CGRectIntegral(rect) withFont:font lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
没有人知道为什么它只能在模拟器如我所料? 顺便说一句,我使用iOS6的的SDK,它可以是什么呢? 它说的是与视网膜显示? 如何解决呢?
当你调用UIGraphicsBeginImageContext
,你应该使用扩展的呼叫屏幕比例通过,像这样:
UIGraphicsBeginImageContextWithOptions(image.size, YES, [[UIScreen mainScreen] scale]);
这将创建在你的屏幕比例图像内容。 需要注意的是第二个参数,这里YES
,是你是否不需要图像是不透明的。 如果有透明度的图像,将其设置为NO
。
我选择的默认字体大小(在我的情况下,它是48),然后根据一些参考尺寸检查图像尺寸(对我来说640×480),我这样做,通过sqrtf(区域(a)/区域(REF)),然后乘以该导致上的字体大小。 这是它为我工作的唯一途径。
希望这将有助于其他...
// Drawing text on image
+ (UIImage*) drawText:(NSString*)text withColor:(UIColor *) textColor inImage:(UIImage*)image atPoint:(CGPoint)point {
UIFont *font = [UIFont boldSystemFontOfSize:12];
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
CGRect rect = CGRectMake(point.x, point.y, image.size.width, image.size.height);
[textColor set];
[text drawInRect:CGRectIntegral(rect) withFont:font];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
文章来源: Write text on image in objective-c iPhone, Font size of simulator different from on iPhone itself