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?
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.
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:
Et votre vue Web est le premier enfant de votre vue principale:
Sans mise en page automatique
Modifier les connexions avec la taille de la vue Web:
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];
}