Подтвердить что ты не робот

MKMapView renderInContext - проблема iPhone 4 (Retina)

У меня есть MKMapView размером 64x64. Я создаю изображение из вида карты, используя метод renderInContext:. И присвоение изображения UITableViewCell imageView. В обычном iPhone изображение отображается правильно. Но в iPhone (Retina) его показ изображения размыт. Я делаю это в симуляторе, а не на самом устройстве. Я добавил скриншоты ниже.

alt text

Миниатюра в левой части, с закругленными углами, является UITableViewCell imageView. Миниатюра в правой части - MKMapView.

Я использую следующий код, чтобы получить изображение из вида карты.

UIGraphicsBeginImageContext(CGSizeMake(64, 64));
CGContextRef context = UIGraphicsGetCurrentContext();
[[mapView layer] renderInContext:context];
thumbnail_image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Почему это происходит в iPhone (Retina)? Как это исправить?

4b9b3361

Ответ 1

Как уже упоминалось в предыдущем ответе который я дал:

Используйте UIGraphicsBeginImageContextWithOptions вместо UIGraphicsBeginImageContext:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(64, 64), NO, 0.0);

Подробнее см. QA1703. В нем говорится:

Примечание. Начиная с iOS 4, UIGraphicsBeginImageContextWithOptions позволяет обеспечить масштаб фактор. Масштабный коэффициент нуля устанавливает его к масштабному коэффициенту устройства главный экран. Это позволяет вам получить самое резкое, самое высокое разрешение моментальный снимок дисплея, включая Отображение сетчатки.

Ответ 2

Не могли бы вы предоставить примерный код (потому что мне действительно интересно, как вы это сделали, на самом деле это новое для меня ^^)
И то, что я сделал в сопоставимой ситуации, я создаю изображение с удвоенным размером, а затем автоматически уменьшаю его на UIImageView (устанавливая свойства изменения размера для всех границ)

EDIT:, но я думаю, что он должен сделать ScaleToFill автоматически

UIGraphicsBeginImageContext(CGSizeMake(128, 128));    
…
myImageView.frame = CGRectMake(0, 0, 64, 64);
myImageView.contentMode = UIViewContentModeScaleToFill;