UIWebview全屏大小

时间:2013-08-31 20:17:52

标签: ios xcode uiwebview

我正在尝试使用设备的整个屏幕在UIWebview中显示pdf,状态栏和顶栏除外。到目前为止,我在.h文件中创建了IBOutlet UIWebview *webview;。我在我的故事板中连接了webview,并在我的.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];

}

pdf在我的3.5英寸显示正确,但在我的4英寸显示屏中,底部被切断。当我旋转到横向视图时,这更加明显。大约33%的屏幕根本不使用。我怎样才能解决这个问题?我知道它必须与我上面的代码(webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];)中的UIWebview维度有关,但有没有更好的方法可以在整个屏幕上简单地显示webview,而无需指定特定的屏幕高度和宽度? / p>

4 个答案:

答案 0 :(得分:30)

要做的一件便宜的事情就是在覆盖中设置webview的框架 - (void)viewDidLayoutSubviews

- (void)viewDidLayoutSubviews {
    webView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}
这里做的好处是,这里已经确定了视图的大小和方向,您可以获得准确的测量结果。

答案 1 :(得分:10)

使用自动布局

确保未选中“约束边距”选项,所有约束值均为0:

enter image description here

您的网络视图是您主视图的第一个孩子:

enter image description here

没有自动布局

更改webview自动连接连接:

enter image description here

答案 2 :(得分:2)

在处理iOS6,7兼容性和不同屏幕尺寸的很多问题之后,我使用了这个:

- (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]; 
}

答案 3 :(得分:0)

通过选择Reset to Suggested Constraints菜单下的Resolve Auto Layout Issues,我能够正常运行。 enter image description here