旋转时UIWebView大小不正确

时间:2012-07-25 08:15:56

标签: ios webview frame

我有一个UIWebView,只覆盖屏幕右侧的大部分。 为此,我使用frame属性指定纵向方向的帧大小和位置。 webView.frame=CGRectMake(220,100,548,875);

当设备旋转为横向时,我为横向指定了一个新框架: webView.frame=CGRectMake(300,73,724,638);

问题是,当我将webView从纵向旋转到横向再到纵向时,我将框架更改为原始框架,其宽度仅为之前的一半..

这是我的代码和函数调用以调整框架的大小:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if(toInterfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
    {
    }
    else if(self.interfaceOrientation==UIInterfaceOrientationPortrait)
    {
        [self showLandscape];
    }
    else if(toInterfaceOrientation==UIInterfaceOrientationPortrait)
    {
        [self showPortrait];
    }
}

-(void)showLandscape
{
.
.
.
webView.frame=CGRectMake(300,73,724,638);
.
.
.
}

-(void)showPortrait
{
.
.
.
webView.frame=CGRectMake(220,100,548,875);
.
.
.
}

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这就是我所做的,运作良好

- (void)viewDidLoad {
    UIWebView *_webView = [[UIWebView alloc] init];
    // when I add these line it is also working well (!!!) on my device
    //_webView.autoresizingMask=UIViewAutoresizingFlexibleWidth;
    //_webView.autoresizesSubviews=YES;
    //_webView.contentMode=UIViewContentModeScaleAspectFit; 
    [self.view addSubview:_webView];
    [_webView setFrame:CGRectMake(220.f, 100.f, 548.f, 875.f)];
}

我也添加了以下代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    for (UIView *_temporaryView in self.view.subviews) {
        if ([_temporaryView isKindOfClass:[UIWebView class]]) {
            if (UIInterfaceOrientationIsPortrait(interfaceOrientation)){
                [_temporaryView setFrame:CGRectMake(220.f, 100.f, 548.f, 875.f)];
            } else {
                [_temporaryView setFrame:CGRectMake(300.f, 73.f, 724.f, 638.f)];
            }
        }
    }

    return true;
}

请将其与您的代码进行比较并找出差异,如果您不想为您提供代码片段来查找异常情况。