iOS 在 iOS 6 中隐藏标签栏会产生黑条(iOS 6 的修复会破坏 iOS 7!)

2023-12-02

我有一个选项卡式应用程序,在一个选项卡中有一个UIWebView。当我将设备旋转到横向时,我已经制作了UIWebView全屏显示,同时隐藏状态和标签栏。

我已经在 iOS 6 中工作了 - 最初在旋转和隐藏选项卡栏时,它会在选项卡栏所在的位置留下一个黑色空间,所以fHeight代码修复了这个问题。然而,在 iOS 6 上它运行得很好,但现在它实际上造成了 iOS 6 所遇到的黑条问题!有解决方法的想法吗?

请参阅下面我的编辑

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
{
    if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [self hideTabBar:self.tabBarController];
        [[UIApplication sharedApplication] setStatusBarHidden:TRUE withAnimation:UIStatusBarAnimationSlide];
    }
    else
    {
        [self showTabBar:self.tabBarController];
        [[UIApplication sharedApplication] setStatusBarHidden:FALSE withAnimation:UIStatusBarAnimationSlide];
    }
}

- (void) hideTabBar:(UITabBarController *) tabbarcontroller
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    float fHeight = screenRect.size.height;
    if(  UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) )
    {
        fHeight = screenRect.size.width;
    }

    for(UIView *view in self.tabBarController.view.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, fHeight, view.frame.size.width, view.frame.size.height)];
        }
        else
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];
            view.backgroundColor = [UIColor blackColor];
        }
    }
    [UIView commitAnimations];
}

- (void) showTabBar:(UITabBarController *) tabbarcontroller
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    float fHeight = screenRect.size.height - 49.0;

    if(  UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) )
    {
        fHeight = screenRect.size.width - 49.0;
    }

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    for(UIView *view in tabbarcontroller.view.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, fHeight, view.frame.size.width, view.frame.size.height)];
        }
        else
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];
        }
    }
    [UIView commitAnimations];
}

//Edit

我尝试过使用这个,但我不确定如何正确传递视图 - 我尝试过self.view和 webView 等,但我无法让它在 iOS 6 和 7 上工作!任何想法都会非常有帮助!如果您需要更多信息,请告诉我

- (void)setTabBarHidden:(BOOL)hidden view:(UIView *)view animated:(BOOL)animated
{
    if (self.tabBar.hidden == hidden)
        return;

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    float height = 0.0f;

    if(UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation))
    {
        height = screenRect.size.width;
    }
    else
    {
        height = screenRect.size.height;
    }

    if (!hidden)
    {
        height -= CGRectGetHeight(self.tabBar.frame);
    }

    void (^workerBlock)() = ^() {

        self.tabBar.frame = CGRectMake(CGRectGetMinX(self.tabBar.frame), height, CGRectGetWidth(self.tabBar.frame), CGRectGetHeight(self.tabBar.frame));
        view.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMinY(view.frame), CGRectGetWidth(view.frame), height);
    };

    void (^completionBlock)(BOOL finished) = ^(BOOL finished) {
        self.tabBar.hidden = hidden;
    };

    if (animated)
    {
        [UIView animateWithDuration:0.25f animations:workerBlock completion:completionBlock];
    }
    else
    {
        workerBlock();
        completionBlock(YES);
    }
}

我创建了一个公共Github 上的要点了解我们是如何做到这一点的。

该解决方案经历了多次迭代@克里斯·拜厄特我们的团队正在尝试。因此,请确保从那里下载最新版本。

方法签名已简化为

- (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated;

你可以在你的内部这样称呼它UIViewController子类:

[self.tabBarController setTabBarHidden:YES animated:YES];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 在 iOS 6 中隐藏标签栏会产生黑条(iOS 6 的修复会破坏 iOS 7!) 的相关文章

  • OpenGL-ES、iPhone 和间歇性错误:GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES (0x8CD6)

    我有一个在 UIView 中使用 OpenGL ES 和 EAGLContext 的应用程序 非常类似于 Apple 的 GLPaint 示例代码应用程序 我在 iPhone 4 上看到这个错误 但在 iPad 上却没有 这可能很重要 大多
  • 从设备获取联系人列表时出现问题

    这段代码有什么问题 NSMutableArray contactArray NSMutableArray alloc init ABAddressBookRef addressBook ABAddressBookCreate CFArray
  • 调用当前的 Modal ViewController 两次?

    我遇到了 UIViewController presentModalViewController 被调用两次的问题 我有一个模态视图 我试图调出另一个模态视图 但第二次没有任何反应 我怀疑它被隐藏了 还有其他人这样做过吗 您不能在同一个父控
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • UIAlertView 每次调用都会弹出三次,而不是一次

    我在程序的两个不同部分中从 NSAlert 中得到了奇怪的行为 行为是 出现警报 然后自发地消失 警报重新出现 然后一直保留 直到用户解除 即正常行为 警报再次出现 此行为仅在第一次调用显示警报的方法时发生 第一次之后 它的行为就正常了 以
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • iOS 7 NS 单线程安全合并冲突

    重新排序两行后 在单线程应用程序上保存简单的数据时遇到问题 我已经成功地简化了编码以重现错误 并且希望其他人尝试这一点时得到第二个意见 这是一次健全性检查 因为我怀疑 iOS 7 引入的核心数据问题 而这在 iOS 6 中工作正常 首先 启
  • 如何在 iPhone 中使用 XMPPFramework 创建 MultiUserChatRoom

    我正在 iPhone 中使用 XMPPFramwwork 开发聊天应用程序 我成功完成了一对一聊天 现在我想在我的应用程序中开发多用户聊天 我尝试了以下代码 但未调用 XMPPRoomDelegate 的任何委托方法 我如何开始创建聊天室
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • 将 NSFetchedResultsController 添加到项目后出现问题

    我设置 CoreData 时没有NSFetchedResultsController一切都保存得很好 切换到之后NSFetchedResultsController 我在尝试保存图像时遇到奇怪的错误 这是我用来保存图像的代码 void sa
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • 如何检测 UITableView 中某个单元格的双击?

    如何检测某个单元格上的双击UITableView i e 如果用户进行了一次触摸 我想执行一个操作 如果用户进行了两次触摸 我想执行另一个操作 我还需要知道进行触摸的索引路径 我怎样才能实现这个目标 Thanks 如果您不想创建子类UITa
  • 移动物体而不实际接触物体

    我是 iPhone 开发的初学者 我一直在寻找这个问题的答案 但还没有找到任何东西 我想做的是允许用户移动对象而无需实际触摸该对象 他们可以触摸屏幕上的任何位置 并且当他们移动时 对象将从原来的位置向用户的方向移动移动但不会跳到他们的触摸位
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend

随机推荐

  • 两个日期之间的月份

    是否可以得到month names两个日期之间SQl ie 2011 05 01 And 2011 08 01是输入 我只想输出为 Month May June July August 如果有人知道该查询 请分享 DECLARE Start
  • signature.verify() 总是返回 False

    public static void main String args try String mod q0AwozeUj0VVkoksDQSCTj3QEgODomq4sAr02xMyIrWldZrNHhWfZAIcWt2MuAY3X6S3Z
  • 未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我正在尝试使用一些即时代码编译VBCodeProvid
  • 对 geom_line 和 x 轴之间的区域进行着色

    我有两张图显示供给和需求 在一张图中我从供给中减去了需求以显示由此产生的不对称性 我想对 x 轴和不对称负值部分之间的区域进行阴影处理 以显示缺陷的程度 我目前使用以下代码 plot asymmetry lt ggplot data df
  • 如何获取高DPI系统下的真实屏幕分辨率?

    因此 Delphi 程序不支持 DPI 直到最近我需要真实的屏幕分辨率时 这才让我感到困扰 当 更容易阅读屏幕上的内容 为 150 时 Screen Width 报告错误的分辨率 在具有高 DPI 的计算机中 一些建议是使应用程序具有高 D
  • 为什么在检查 textView 文本是否以预期字符串结尾(省略时)时 android espresso 测试失败

    我有一个 android 测试 检查应用 android ellipsize end 时外部文本消息是否被截断并以三个点结尾 我不知道为什么测试失败 尽管活动中呈现的文本格式正确 Test fun when errorMessage is
  • 为什么 Java 中有数组和数组

    我遇到过这两个文档 该类的 Java 文档Array 该类的 Java 文档Arrays 我想知道这两个类之间有什么区别 它们都提供了一组不同的静态方法 但为什么它们是分开的呢 更深层次的区别是什么 它们之间的关系与普通数组实例之间的关系是
  • stage 关键字是否在 YAML 文件中的 Azure DevOps 中定义构建或部署管道

    我想知道我们是否考虑这个 YAML 代码块 如果它已经被视为构建和发布管道 或者我们需要定义阶段来表征它 下面的代码可以工作 但运行时看不到各个阶段 然而 在这种情况下 它会构建并部署到 Azure 所以这就是我问的原因 我正在寻找正确的术
  • 限制线程数

    我有一个包含我要下载的项目的列表 我使用 for 循环来迭代列表 对于此列表中的每个项目 我启动一个引用该项目的新线程 我的问题是我想同时限制 maxDownload for int i downloadList Count 1 i gt
  • 在 XMPPFramework 和 Swift 2 中未调用 didReceiveInvitation()

    我正在创建聊天应用程序 例如Whatsapp 我已经成功编写了文本聊天 图像 音频 视频传输的功能 现在我正在创建多用户聊天 经过长时间的研发 我问这个问题 请告诉我我的代码中做错了什么 我已经遵循了所有这些教程 但运气不佳 https g
  • 在 Java Graphics2D 中,文本如何在矩形上居中对齐?

    在这段代码中 我有一个窗口 其中一个角落有一个蓝色框 我需要在此框上对齐文本中心 public class drawComponent extends JComponent public void paintComponent Graphi
  • Keras 不平衡数据集的多重损失

    My Model 我建立了一个暹罗网络 它有两个输入和三个输出 所以我的损失函数是 total loss alpha loss1 alpah loss2 1 alpah loss3 loss1 and loss2 is categorica
  • Google 搜索 API - 仅返回 4 个结果

    经过大量实验和谷歌搜索 以下 Python 代码成功调用了 Google 的搜索 APi 但只返回 4 个结果 在阅读了 Google 搜索 API 文档后 我认为 start 会返回其他结果 但这并没有发生 有人可以指点一下吗 谢谢 Py
  • 有没有办法确定 Apple Watch 和 iPhone 之间的粗略距离?

    我知道在 Apple Watch 发布之前这个问题可能无法解答 但有人知道是否有办法确定 Apple Watch 和 iPhone 之间的粗略距离 以英尺为单位 目前 WatchKit框架不会向您提供此类信息 因为第三方应用程序的功能仍然相
  • WCF 64 位不工作

    我正在尝试开发一个在 64 位环境中运行的简单 WCF 服务 我在Windows 7下启动VS2010 新解决方案 gt WCF 项目 gt 运行 gt 工作正常 一旦我更改项目的属性以使其在 64 位中编译 运行它就会抛出以下异常 Cou
  • 将多个 csv 文件平均为 r 中的 1 个平均文件

    我有大约 300 个风速 温度 压力等的 csv 文件 每列都是 2007 年到 2012 年的不同时间 每个文件都来自不同的位置 我想将所有文件合并为一个 即所有 300 个文件的平均值 因此 新文件中每个文件的行数和列数都相同 但每个单
  • Android - 清除 Facebook 访问令牌

    我有一个SettingsActivity其中有多种选项 包括查找 Facebook 好友和注销 因此 当用户选择查找她的 Facebook 好友时 她将被发送到另一个活动 我让她使用她的 Facebook 帐户登录并保存她的访问令牌 然后
  • 当容器是超链接时,Flex 图像不会随屏幕尺寸缩小

    有人可以告诉我这是否是 Flexbox 的一个未记录的错误 或者我只是做错了 我有 3 个图像在 div 容器内排成一行 这对人们来说很简单 如果没有任何超链接 所有 3 个图像都会按其应有的方式完美缩小 div style width 1
  • 有没有适用于 Java Swing 的优秀且免费的日期和时间选择器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有没有适用于 Java Swing 的优秀且免费的日期和时间选择器 有很多可用的日期选择器 但没有日期和时间选择器 这是迄今为止我遇到的最接近的 寻找日期和时间选择器 Anybody
  • iOS 在 iOS 6 中隐藏标签栏会产生黑条(iOS 6 的修复会破坏 iOS 7!)

    我有一个选项卡式应用程序 在一个选项卡中有一个UIWebView 当我将设备旋转到横向时 我已经制作了UIWebView全屏显示 同时隐藏状态和标签栏 我已经在 iOS 6 中工作了 最初在旋转和隐藏选项卡栏时 它会在选项卡栏所在的位置留下