[英]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.