当UILabel
对象存储为图像时,我在重新定位UILabel
对象的内容方面存在一些问题。由于渲染图像必须大于原始imageScale
,因此我计算了重新缩放原始图像并将其保存到CGSize
变量所需的比例[labelImage drawInRect:CGRectMake(xCoordinate/imageScale.width,
yCoordinate/imageScale.height,
newSize.width,
newSize.height)
blendMode:kCGBlendModeNormal alpha:0.8];
。在下文中,我将解释采用的(和失败的)方法。
用于渲染图片的代码
以下代码用于在画布上渲染提取的图像。
newSize
其中变量newSize.width = originalWidth/imageScale.width
的计算方法如下:
newSize.height = originalHeight/imageScale.height
; UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[[label layer] renderInContext: UIGraphicsGetCurrentContext()];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
方法1
我使用以下代码提取标签:
label
其中UILabel
是newSize
变量,而UIGraphicsBeginImageContextWithOptions([label bounds].size, NO, 0.0);
[[label layer] renderInContext: UIGraphicsGetCurrentContext()];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
是重新缩放图片应具有的尺寸(详见上文)。
但是,我获得了下面的图片,这显然是失败的,因为内容很少而且没有居中:
方法2
我使用以下代码提取标签:
{{1}}
但是,由于我使用原始图像尺寸来提取图像,因此我获得的效果如下:
您可以注意到,气球中的文字分辨率不高,因此无法正确显示。
问题
如何纠正两种方法中的一种,以便以高分辨率显示图像?
答案 0 :(得分:0)
好像你只需要为生成的图像设置适当的比例。
这是功能:
void UIGraphicsBeginImageContextWithOptions(
CGSize size,
BOOL opaque,
CGFloat scale
);
您将比例设为0.0
。尝试将其替换为[UIScreen mainScreen].scale
。