我有一个大小为64x64的MKMapView。我正在使用'renderInContext:'方法从地图视图创建图像。并将图像分配给UITableViewCell的imageView。在普通的iPhone中,它显示图像正确。但在iPhone(Retina)中它显示的图像模糊不清。我在模拟器中测试这个,而不是在实际设备中。我已经附上了下面的屏幕截图。
左侧的缩略图,带圆角,是UITableViewCell的imageView。右侧的缩略图是MKMapView。
我使用以下代码从地图视图中获取图像。
UIGraphicsBeginImageContext(CGSizeMake(64, 64));
CGContextRef context = UIGraphicsGetCurrentContext();
[[mapView layer] renderInContext:context];
thumbnail_image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
为什么会在iPhone(Retina)中发生这种情况?如何解决这个问题?
答案 0 :(得分:23)
正如previous answer I gave中已经提到的那样:
使用UIGraphicsBeginImageContextWithOptions
代替UIGraphicsBeginImageContext
:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(64, 64), NO, 0.0);
有关详细信息,请参阅QA1703。它说:
注意:从iOS 4开始, UIGraphicsBeginImageContextWithOptions 允许您提供比例 因子。比例因子为零设定它 到设备的比例因子 主屏幕。这使您可以获得 最尖锐,最高度的重新燃烧 显示的快照,包括一个 Retina Display。
答案 1 :(得分:1)
请你提供一些示例代码(因为我真的很感兴趣你是怎么做的,事实上它对我来说是新的^^)
我在类似的情况下做了什么,我创建了一个双倍大小的图像,然后让它自动缩小UIImageView
(设置调整大小属性以适应所有边框)
编辑,但我认为它应该自动生成ScaleToFill
UIGraphicsBeginImageContext(CGSizeMake(128, 128));
…
myImageView.frame = CGRectMake(0, 0, 64, 64);
myImageView.contentMode = UIViewContentModeScaleToFill;