0

我遇到了一些非常奇怪的事情,我正在为图像添加标题,并且在模拟器上一切正常,但在设备本身上,字体真的很小......

使用此代码时遇到问题:

-(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,它可以在那里吗?与视网膜显示器有关吗?如何解决?

4

3 回答 3

1

当您调用 时UIGraphicsBeginImageContext,您应该使用扩展调用来传递屏幕比例,如下所示:

UIGraphicsBeginImageContextWithOptions(image.size, YES, [[UIScreen mainScreen] scale]);

这将在您的屏幕范围内创建图像上下文。请注意,此处的第二个参数YES是您是否需要图像不透明。如果您的图像中有透明度,请将其设置为NO.

于 2012-07-02T17:46:28.153 回答
0

我选择默认字体大小(在我的情况下是 48),然后根据一些参考尺寸(在我的情况下为 640x480)检查图像大小,我通过 sqrtf(area(a)/area(ref)) 做到这一点,然后乘以这个字体大小的结果。这是它对我有用的唯一方法。

希望对其他人有所帮助...

于 2012-07-03T21:26:23.347 回答
0
//  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;
}
于 2014-07-30T13:15:58.157 回答