gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:19:38 25 4
gpt4 key购买 nike

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

该应用程序基于 UITabController, Controller 中的所有选项卡均未显示 UIWebViews 并且我不想允许整个应用程序旋转。

所以我有两个问题。

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

最佳答案

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

在我的应用程序中,选项卡栏 Controller 将以所有方向显示,但纵向倒置除外。如果您将选项卡栏 Controller 锁定到一个方向,我相信您也会将所有后续 View 锁定在选项卡栏内。本质上,我隐藏了状态栏、导航栏和选项卡栏,同时将导航栏向上移出 View ,将选项卡栏向下移出 View ,并调整中间内容的大小。这是我所做的一个示例,假设您有 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);
}
}

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com