2011-01-05 11 views
16

64Mb64 boyutunda bir MKMapView yaşıyorum. 'RenderInContext:' yöntemini kullanarak harita görünümünden bir görüntü oluşturuyorum. Ve görüntüyü UITableViewCell imageView'a atamak. Normal iPhone'da, görüntüyü doğru gösteriliyor. Ama iPhone'da (Retina) görüntüyü bulanıklaştırıyor. Bunu, gerçek cihazda değil, simülatörde deniyorum. Ekran görüntülerini aşağıda ekledim. köşeleri yuvarlatılmış MKMapView renderInContext - iPhone 4 (Retina) sorunu

alt text

sol tarafında küçük

, UITableViewCell en imageview olup. Sağdaki küçük resim MKMapView.

Görüntüyü haritadan almak için aşağıdaki kodu kullanıyorum.

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

Neden bu iPhone'da (Retina) olur? Bunu nasıl düzeltebilirim?

+2

bu cevabı deneyin: http://stackoverflow.com/questions/4219496/rendering-mkmapview-to-uiimage-with-real-resolution/4219721#4219721 – Anna

+0

Hai Sir Gudevening, nasıl küçük resim oluşturmak için (75 * 75) mkmapview'den görüntü mü? Yukarıdaki görüntü gibi ... eğer plz örnek kod sağlasa da ... teşekkür ederim. –

cevap

23

olarak erkekler yapmak gerektiğini düşünüyorum traversler üzerinde bir previous answer I gave içinde:

Kullanım UIGraphicsBeginImageContextWithOptions yerine UIGraphicsBeginImageContext:

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

fazla ayrıntı için QA1703 bakınız. Şöyle ki:

Not: iOS 4, bir ölçek faktörü ile sunma olanağı sağlıyor UIGraphicsBeginImageContextWithOptions başlayarak. Sıfırın bir ölçek faktörü, aygıtın ana ekranının ölçek faktörüne değerini ayarlar. Bu, Retina Ekranı dahil olmak üzere, ekranın en yüksek çözünürlüğü olan anlık görüntüsünü almanızı sağlar.

+2

Çok teşekkür ederim .. – EmptyStack

+0

Bu soruyu araştırmaya ve kafamı karıştırmaya başladığımdan beri kendime bir not. UIImage UIGraphicsGetImageFromCurrentImageContext() 'den geri döndüğünüzde 64x64, 128x128 değil, düşünebilirsiniz - UIImage (ve alttaki CGImage) ek bir ölçek özelliğine sahiptir. Görüntüyü bir GL dokusuna koyuyordum ve görüntü (nokta) boyutunu kullanarak, piksel boyutlarını elde etmek için ölçeğe göre çoğaltmam gerektiğini unutuyordum. Bir dahaki sefere hatırlamaya çalış, gel beni. – davehayden

1

Lütfen bazı örnek kodları sağladığınızdan emin olabilirsiniz (çünkü gerçekten bunu yaptığınız için gerçekten çok ilgi duyuyorum çünkü benim için yeni bir şey ^^)
Ve benzer bir durumda yaptığım şey çift görüntülü bir resim oluşturuyorum. boyut ve sonra (tüm sınırları sığdırmak için yeniden boyutlandırma özelliklerini ayarlama) UIImageView tarafından otomatik olarak küçültmek izin

DÜZENLEME: ama zaten ScaleToFill otomatik

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

Yeniden boyutlandırma özelliği nasıl ayarlanır? Aslında görüntü görüntüsü UITableViewCell'in imageView'idir. – EmptyStack

+0

kodu düzeltildi. –

İlgili konular