在横向中查看时,UIWebView保持纵向尺寸

时间:2012-12-28 21:01:25

标签: uiwebview storyboard xcode4.5 landscape dimensions

我无法在任何地方找到解决此问题的方法。 我正在使用Xcode 4.5使用故事板编写iOS 6应用程序。它使用导航控制器在几个带有导航栏的视图控制器之间跳转,其中包括一些使用UIWebView显示网站的导航栏。我已经向AppDelegate和各种ViewController文件添加了代码,以便将应用程序中的大多数场景的视图限制为肖像(因为它们实际上看起来不会很好),但允许网站的横向视图。 Info.plist配置允许所有4个方向。

UIWebView场景中的一切正常;包括旋转,滚动和缩放 - 除了一件事:当我从纵向旋转到横向时,网站的水平尺寸保持锁定在纵向视图的水平尺寸 - 导致网站右侧的大空白区域场景(见下图)。我通过在Attributes Inspector中的View Controller下选择Layout:Wants Full Screen来修复UIWebView顶部的一个小(1/4“)空白区域。但是我无法解决这个问题。

如有必要,我可以提供相关代码或故事板设置。有人可以帮忙吗?谢谢。

Portrait view

Landscape view

1 个答案:

答案 0 :(得分:0)

当解决方案加载到viewDidLoad方法时,我解决了添加此代码的问题:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
 [[NSNotificationCenter defaultCenter]
     addObserver:self selector:@selector(orientationChanged:)
     name:UIDeviceOrientationDidChangeNotification
     object:[UIDevice currentDevice]];

然后将其添加到视图控制器:

- (void) orientationChanged:(NSNotification *)note
{
    UIDevice * device = note.object;
    switch(device.orientation)
    {
        case UIDeviceOrientationPortrait:
            _displayWeb.frame = CGRectMake (0, 0, 768, 1024);
            break;

        case UIDeviceOrientationPortraitUpsideDown:
            _displayWeb.frame = CGRectMake (0, 0, 768, 1024);
            break;
        case UIDeviceOrientationLandscapeLeft:
                _displayWeb.frame = CGRectMake (0, 0, 1024, 768);
            break;
        case UIDeviceOrientationLandscapeRight:
            _displayWeb.frame = CGRectMake (0, 0, 1024, 768);
            break;
        default:
            break;
    };
}

_displayWeb是你的IBOutlet UIWebView,就像这是使用Xcode 4.6.1