web-dev-qa-db-fra.com

UIWebview Plein écran

J'essaie d'afficher un fichier PDF dans UIWebview en utilisant tout l'écran de l'appareil, à l'exception de la barre d'état et de la barre supérieure. Jusqu'ici, j'ai créé IBOutlet UIWebview *webview; dans mon fichier .h. J'ai connecté la vue Web dans mon storyboard et écrit le code suivant dans mon fichier .m:

- (void)viewDidLoad
{
    [super viewDidLoad];

    webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];

    webview.scalesPageToFit = YES;
    webview.autoresizesSubviews = YES;
    webview.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    [webview setBackgroundColor:[UIColor clearColor]];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Chart" ofType:@"pdf"];
    NSURL *targetURL = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
    [webview loadRequest:request];

    [self.view addSubview:webview];

}

Le pdf s'affiche correctement dans mon 3,5 pouces, mais dans mon écran 4 pouces, le fond est coupé. Ceci est encore plus visible lorsque je passe en mode paysage. Environ 33% de l'écran n'est pas utilisé du tout. Comment puis-je réparer cela? Je sais que cela doit avoir un lien avec les dimensions UIWebview dans mon code ci-dessus (webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];), mais existe-t-il un meilleur moyen d'afficher simplement la vue Web sur tout l'écran, sans spécifier de hauteur ni de largeur spécifiques?

9
George Friday

Une solution peu coûteuse consiste à définir le cadre de la vue Web en écrasant - (void) viewDidLayoutSubviews

- (void)viewDidLayoutSubviews {
    webView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}

l'avantage de le faire ici, c'est que la taille et l'orientation de la vue ont déjà été déterminées ici, et vous pouvez obtenir une mesure précise.

30
HalR

Utilisation de la disposition automatique

Assurez-vous que l'option "Contraindre aux marges" n'est pas cochée, toutes les valeurs de contrainte sont 0:

enter image description here

Et votre vue Web est le premier enfant de votre vue principale:

enter image description here

Sans mise en page automatique  

Modifier les connexions avec la taille de la vue Web:

enter image description here

10
karenms

Après beaucoup de maux de tête liés à la compatibilité de iOS6, 7 et de différentes tailles d'écran, j'utilise celui-ci:

- (void)viewDidLoad {
   [super viewDidLoad];

   self.webview = [[UIWebView alloc] init];
   // More setting your webview here

   // Set webview to full screen
   self.view = self.webview;

   [self.webview loadRequest:aRequest]; 
}
2
giacatho

J'ai pu obtenir cela fonctionne correctement pour moi en sélectionnant le Reset to Suggested Constraints dans le menu Resolve Auto Layout Issues.  enter image description here

0
Joe Saunders