写在图像文本在Objective-C的iPhone,在iPhone本身不同模拟器的字体大小(Writ

2019-09-19 00:18发布

我有一些非常奇怪的打算,我加入字幕到的图像和一切工作正常在模拟器,但设备本身上的字体非常小...

我已经使用这个代码时出现问题:

-(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,它可以是什么呢? 它说的是与视网膜显示? 如何解决呢?

Answer 1:

当你调用UIGraphicsBeginImageContext ,你应该使用扩展的呼叫屏幕比例通过,像这样:

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

这将创建在你的屏幕比例图像内容。 需要注意的是第二个参数,这里YES ,是你是否不需要图像是不透明的。 如果有透明度的图像,将其设置为NO



Answer 2:

我选择的默认字体大小(在我的情况下,它是48),然后根据一些参考尺寸检查图像尺寸(对我来说640×480),我这样做,通过sqrtf(区域(a)/区域(REF)),然后乘以该导致上的字体大小。 这是它为我工作的唯一途径。

希望这将有助于其他...



Answer 3:

//  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