• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:02:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个用代码创建的 UIWebView,我正在使用 initWithFrame 来定义启动大小。默认情况下,当我旋转设备时,不会旋转任何东西,并且方向与启动时相同。

该应用程序基于 UITabController 并且 Controller 中的所有选项卡都没有显示 UIWebViews 并且那里 我不想 想要允许整个应用旋转。

所以我有两个问题。

  • 是否可以只允许旋转 UIWebView 的内容?
  • 如果上述方法不可行,如何在旋转时移除 TabBar(应用委托(delegate)?),是否需要刷新 UIWebView 的内容以跨越窗口?



Best Answer-推荐答案


当我想在横向模式下全屏显示图像时遇到了类似的问题,并且它是纵向模式下的默认位置。由于我的应用程序包含一个 TabBarController,每个选项卡都显示一个导航 Controller ,因此我必须使用“willAnimateRotationToInterfaceOrientation”来移动自己周围的东西,以获取包含图像的 View 。

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

- (void)willAnimateRotationToInterfaceOrientationUIInterfaceOrientation)interfaceOrientation durationNSTimeInterval)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);
}
}

我相信通过调整 webview 的大小,它应该会自动适本地适应内容,而无需“刷新”本身。

关于ios - 仅在 UIWebView 上允许方向/旋转更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259022/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap