仅允许在UIWebView上更改方向/旋转

时间:2010-11-23 17:37:41

标签: ios

我已经使用代码创建了UIWebView,我使用initWithFrame来定义启动大小。默认情况下,当我旋转设备时,没有任何东西被旋转,方向与它开始时的方向相同。

该应用程序基于UITabController,并且控制器中的所有选项卡都没有显示UIWebViews,而我不希望允许整个应用程序旋转。

所以我有两个问题。

  • 是否可以仅允许旋转UIWebView的内容?
  • 如果上述情况不可能,如何在旋转时删除TabBar(app delegate?),是否需要刷新UIWebView的内容以跨越窗口?

1 个答案:

答案 0 :(得分:3)

当我想在横向模式下显示全屏图像时,我遇到了类似的问题,它是纵向模式下的默认位置。由于我的应用程序包含一个TabBarController,每个选项卡都显示一个导航控制器,因此我必须使用“willAnimateRotationToInterfaceOrientation”为包含图像的视图移动自己。

在我的应用程序中,标签栏控制器将以除纵向上下颠倒的所有方向显示。如果您将标签栏控制器锁定到一个方向,我相信您也会锁定标签栏中的所有后续视图。基本上我隐藏了状态栏,导航栏和标签栏,同时将导航栏向上移出视图,并将标签栏向下移出视图,并调整中间内容的大小。这是我所做的一个例子,假设你有self.WebView(例如,那将是我的形象):

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {

float navBarHeight = self.navigationController.navigationBar.frame.size.height;
float tabBarHeight = ((UITabBarController *)self.navigationController.parentViewController).tabBar.frame.size.height;

if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
    float statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    self.navigationController.navigationBar.hidden = YES;
    ((UITabBarController *)self.navigationController.parentViewController).tabBar.hidden = YES;

    // TabBarController adjustments
    self.navigationController.parentViewController.view.bounds = CGRectMake(0, -tabBarHeight/2, 480, 320 + tabBarHeight);

    // Adjust view
    self.view.frame = CGRectMake(0, -statusBarHeight - navBarHeight, 480, 320);

    // Adjust web view
    self.WebView.frame = CGRectMake(26, 0, 426.6667, 320);
}

if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    float statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
    self.navigationController.navigationBar.hidden = NO;
    ((UITabBarController *)self.navigationController.parentViewController).tabBar.hidden = NO;

    // TabBarController adjustments
    self.navigationController.parentViewController.view.bounds = CGRectMake(0, 0, 320, 480);

    // NavigationController adjustments
    self.navigationController.navigationBar.frame = CGRectMake(0, statusBarHeight, 320, navBarHeight);

    // Adjust view
    self.view.frame = CGRectMake(0, statusBarHeight + navBarHeight, 320, 480 - statusBarHeight - navBarHeight - tabBarHeight);

    // Adjust web view
    self.WebView.frame = CGRectMake(0, 0, 320, 240);
}
}

我相信通过调整您的网页浏览量,它应该会自动适应内容,而不必“刷新”本身。