2013-04-05 19 views
7

İnsanlık tarafından bilinen her bir izin denedim ve iPad için kalıcı form görünümünde düzgün bir şekilde boyutlandırmak için bir UIWebView alamıyorum. Web sayfası hala 768 puanlık tam iPad portre genişliğini göstermektedir.UIWebView bir UIModalPresentationFormSheet içinde nasıl boyutlandırılır?

UIWebView'e 540 punto genişliğini nerede ve nasıl göstereceğini söyleyebilirim?

'scalesPageToFit' 'in bunu yapması bekleniyordu ama işe yaramadı.

Web görünümünü, gezinme ve durum çubuğuyla 540 x 576 biçimindeki form görünümü boyutuna ayarlamayı denedim. Yükseklik olsa da ilgisizdir.

Tüm yeniden boyutlandırma kümeleriyle bir UIWebView'ı bir storyboard'a UIView'e eklemeyi denedim. Sonra UIWebView kaldırıldı ve program aracılığıyla ekledi.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect aFrame = self.view.frame; 

    if (IS_IPAD) 
    { 
     aFrame = CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT); 
    } 

    _webView = [[UIWebView alloc] initWithFrame:aFrame]; 
    [_webView setOpaque:NO]; 
    [_webView setDelegate:self]; 
    [_webView setScalesPageToFit:YES]; 

    self.view = _webView; 
    ... 
} 

Ayrıca (vs viewDidLoad, viewWillAppear, ek olarak) viewDidAppear takdir

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [[self webView] setFrame:CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT)]; 
    [[self webView] setScalesPageToFit:YES]; 

    NSURL *webURL = [NSURL URLWithString:@"http://www.google.com"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:webURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f]; 
    [[self webView] loadRequest:request]; 
} 

herhangi öneriler yükleme çalıştı.

enter image description here

cevap

3

Bu benim başıma tutar. Uzun bir soru yayınlıyorum, sonra iki saniye sonra cevabı buldum.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString* js = 
    @"var meta = document.createElement('meta'); " 
    @"meta.setAttribute('name', 'viewport'); " 
    @"meta.setAttribute('content', 'width = 540px, initial-scale = 1.0, user-scalable = yes'); " 
    @"document.getElementsByTagName('head')[0].appendChild(meta)"; 

    [[self webView] stringByEvaluatingJavaScriptFromString: js]; 
} 

Not kısmı 'width = 540px: Ben iPad genişliğine genişliğini ayarlamak için komut dosyası değişmiş, ancak UIWebView -- load external website, programmatically set initial zoom scale, and allow user to zoom afterwards

:

Neyse, burada birinin bu soruna bir çözüm yayınlanmıştır ilk ölçek = 1.0, kullanıcı-ölçeklenebilir = evet '

Genişliği form genişliğine değiştirdim ve 1,0'a ölçeklendirdim.

Ayrıca iPhone'u da kullanmam gerekiyor ve bundan sonra bunun için ayarlamalar yapacağım. Bu düzeltmenin sadece iPad form görünümü için gerekli olabileceğini düşünüyorum.

GÜNCELLEME: Yanıt kısa sürelidir. Başka bir sayfa yüklüyorsam, boyutlandırma tekrar atılır. Silbaştan.

ÇÖZÜM: Bu görünümün yalnızca geliştirdiğim birkaç web sayfasına erişmesi gerekiyor. Bu nedenle, her birine meta etiketi ekleyerek erişmem gereken birkaç web sayfasını güncelledim. Sadece bu sayfalara erişmem gerekiyor ve bu yüzden gitmeyi planladığım çözüm bu. Bu, viewport genişliğini sadece bir şekilde iPad için 540px'e ayarlamanız gerektiği anlamına geliyor. Bundan sonra anlayacağım.

<meta name="viewport" content="width:540, initial-scale=1, maximum-scale=1"> 
+0

Benim şu anki uygulama ben ayrıştırmak ve iPad'de formu görünümü içinde erişilen help_ipad.html olarak kaynaklar sayfalarından hedef sayfaları oluşturmak için bir python komut dosyası yazdım olmasıdır. – Christopher

+0

Dikkat edilmeye değer bir nokta: Uygulamayı döndürürken bulduğum görüntü alanını temizlemezseniz, uygulanan özellikleri kaybeder. Bu komut dosyasını ilk olarak çalıştırarak görüntü alanını temizleyebilirsiniz: [webView stringByEvaluatingJavaScriptFromString: @ "$ ('meta [name = viewport]'). Remove();"]; – Vlad