MKMapView renderInContext - iPhone 4(Retina)问题

Emp*_*ack 16 iphone objective-c ios

我有一个大小为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();
Run Code Online (Sandbox Code Playgroud)

为什么会在iPhone(Retina)中发生这种情况?如何解决这个问题?

小智 23

正如之前的回答中提到的,我给出了:

使用UIGraphicsBeginImageContextWithOptions而不是UIGraphicsBeginImageContext:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(64, 64), NO, 0.0);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅QA1703.它说:

注意:从iOS 4开始,UIGraphicsBeginImageContextWithOptions允许您提供比例因子.比例因子为零将其设置为设备主屏幕的比例因子.这使您可以获得显示器的最清晰,最高分辨率的快照,包括Retina显示屏.