2016-04-14 59 views
7

iOS 9.2'de, aygıt genişliğinden daha büyük sabit genişlikli tablolara sahip bir WKWebView oluşturma HTML'sinin, içeriği aşağıdaki gibi bir görünüm etiketi ekleyerek sığacak şekilde küçültmesi söylenebilir: WKWebView görünüm penceresi küçültme özelliği iOS 9.3 üzerinde çalışmıyor

<meta name="viewport" content="width=device-width, shrink-to-fit=YES"> 

Bu hat

etkili bir görünüm uzaklaştırmak için WKWebView sebep oldu kaydırma çubukları için gerek kalmadan görünüm çerçevesindeki tüm render sayfa uyum. Bir vanilya tek görünüm uygulamasında viewDidLoad çalıştırdığınızda Örneğin, şu kodu göz önünde bulundurun:

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; 
WKWebView *newWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0,40,self.view.frame.size.width, self.view.frame.size.height - 40) configuration:wkWebConfig]; 
NSString *toRender = @"<head><meta name=\"viewport\" content=\"width=device-width, shrink-to-fit=YES\"></head><body><table width=700 style='background-color: blue; color:white; font-size=20px'><tr><td>this is some text that is long enough to exceed the width of the iphone 6 unless shrink-to-fit is applied</td></tr></table></body>"; 
[newWebView loadHTMLString:toRender baseURL:nil]; 
[self.view addSubview:newWebView]; 

içerik bu gibi işler:

enter image description here

Ancak, bu davranış 9.3 değişti. Bunu başka yerde stackoverflow başka sorular aranıyor

enter image description here

(Eğer ekran görüntüsünde görmek mümkün olmasa da, orada yatay kaydırma çubuğu)

ve: 9.3 çalışan özdeş kod aşağıdaki gibi vermektedir Diğer çoğu insan 9.3 davranış tercih ediyor gibi görünüyor. Bununla birlikte, shrink-to-fit'in 9.2 davranışına ihtiyacım var. Öyleyse, sorum şu: 9.3'te aynı şekilde küçültme davranışını nasıl alacaklarını bilen var mı? Ve bu değişikliğin kasıtlı olup olmadığını ya da sonraki sürümlerde düzeltilecek bir hata olup olmadığını bilen var mı?

Testim kodu özellikle https://github.com/nsolter/NSWebViewShrinkTest bulunabilir https://github.com/nsolter/NSWebViewShrinkTest/blob/master/NSWebViewShrinkTest/ViewController.m

cevap

6

Ben Apple ile bir hata raporu yayımlandı ve bu yanıttır:

"Hayır, biz korumak istemiyoruz küçültmek-to -fit davranış. Geçici çözüm, içeriğin genişliğini doğru olarak tanımlayan bir viewport meta etiketi kullanmaktır. "

Bunu denedim. Viewport etiketinde, oluşturulduktan sonra html'nin gerçek genişliğinin bir genişliğini belirtirseniz, cihazınızın genişliğinde düzgün bir şekilde görüntülenecektir. Yukarıdaki örneğimde, 700 tablo genişliği ile, belirtirseniz: <meta name=\"viewport\" content=\"width=700, shrink-to-fit=YES\">

Ardından sayfa yatay kaydırma çubukları olmadan görüntülenecektir.

Bununla birlikte, başlangıç ​​ölçekli bir viewport özelliği belirleyemeyeceğinizi unutmayın. Sonra uygun genişlikte görüntülenmiyor.

Bu, genellikle ideal olandan daha azdır, çünkü genellikle işlenen html'nin genişliğinin, siz onu işleyene kadar ne olacağını bilmezsiniz. Şu anki çözümüm, width = device-width ile bir kez oluşturmak ve sonra tekrar width = X ile oluşturmaktır. Burada X, işlenen sayfanın ilk genişliği olan X'dir.

+0

Ayrıca width = aygıt genişliğini kullanıyorum ve aynı sorunla karşılaşıyorum. Sayfayı width = X ?? ile yeniden yüklüyor musunuz? – anoop4real

+0

Esasen, evet. Aslında şu anda görüntülenmeyen yeni bir WKWebView'da çalışıyorum ve daha sonra bu yeni web görünümünde yer değiştiriyorum. –

+1

Bazı örnekleriniz var mı? – anoop4real