[英]MKMapView renderInContext - iPhone 4 (Retina) issue
我有一个大小为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)中发生这种情况? 如何解决这个问题?
使用UIGraphicsBeginImageContextWithOptions
而不是UIGraphicsBeginImageContext
:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(64, 64), NO, 0.0);
有关详细信息,请参阅QA1703 。 它说:
注意:从iOS 4开始,UIGraphicsBeginImageContextWithOptions允许您提供比例因子。 比例因子为零将其设置为设备主屏幕的比例因子。 这使您可以获得显示器的最清晰,最高分辨率的快照,包括Retina显示屏。
你能不能提供一些示例代码(因为我真的很感兴趣你是怎么做的,事实上它对我来说是新的^^)
我在类似的情况下做了什么我创建了一个双倍大小的图像然后让它由UIImageView
自动缩小(设置调整大小属性以适应所有边框)
编辑:但我认为它应该自动生成ScaleToFill
UIGraphicsBeginImageContext(CGSizeMake(128, 128));
…
myImageView.frame = CGRectMake(0, 0, 64, 64);
myImageView.contentMode = UIViewContentModeScaleToFill;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.