如何更新 StatusBar 样式作为自定义转换的一部分

2024-04-30

我使用的是 iOS 7UIviewControllerAnimatedTransitioning呈现模式的协议ViewController带有自定义动画。动画工作正常,但是我想要新呈现的ViewController具有与当前 VC 不同的状态栏样式。

我看到的是-(UIStatusBarStyle)preferredStatusBarStyle在 PRESENTING 上被叫去ViewController(事实上​​有好几次)并且从来没有在新推出的ViewController。如果我删除自定义动画,状态栏的所有内容都会按我的预期工作。

我需要在 animateTransition 函数中做一些特殊的事情来更新根视图控制器或其他东西吗?我尝试过手动设置状态栏[UIApplication sharedApplication] setStatusBarStyle但它不起作用(我想是因为我正在使用基于 ios 7 视图控制器的状态栏样式)。

这是我的 animateTransition 代码:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UICollectionViewCell *activeCell;
    if ([self.collectionView.visibleCells containsObject:self.cellForActiveIdeaVC]) {
        activeCell = self.cellForActiveIdeaVC;
    }

    UIView *container = transitionContext.containerView;
    UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIView *fromView = fromVC.view;
    UIView *toView = toVC.view;

    CGRect beginFrame;
    if (activeCell) {
        beginFrame = [container convertRect:activeCell.bounds fromView:activeCell];
    } else {
        beginFrame = CGRectMake(container.width / 2, container.height / 2, 0, 0);
    }

    CGRect endFrame = [transitionContext initialFrameForViewController:fromVC];

    UIView *move = nil;
    if (toVC.isBeingPresented) {
        toView.frame = endFrame;
        move = [toView snapshotViewAfterScreenUpdates:YES];
        move.frame = beginFrame;
    } else {
        if (activeCell) {
            move = [activeCell snapshotViewAfterScreenUpdates:YES];
        } else {
            move = [fromView snapshotViewAfterScreenUpdates:YES];
        }
        move.frame = fromView.frame;
        [fromView removeFromSuperview];
    }
    [container addSubview:move];

    [UIView animateWithDuration:.5
                          delay:0
         usingSpringWithDamping:700
          initialSpringVelocity:15
                        options:0
                     animations:^{
                         move.frame = toVC.isBeingPresented ?  endFrame : beginFrame;
                     }
                     completion:^(BOOL finished) {
                         [move removeFromSuperview];

                         if (toVC.isBeingPresented) {
                             toView.frame = endFrame;
                             [container addSubview:toView];
                         } else {
                             if (self.cellForActiveIdeaVC) {
                                 self.cellForActiveIdeaVC = nil;
                             }
                         }

                         [transitionContext completeTransition:YES];
                     }];
}

非常感谢任何指点!


使用 iOS 7 自定义转换,可以呈现非全屏的视图控制器,因此不会影响状态栏的外观。您必须明确告诉 iOS,您的自定义呈现视图控制器实际上将控制状态栏的外观。

UIViewController *controllerToPresent = [...]
controllerToPresent.modalPresentationStyle = UIModalPresentationStyleCustom;
controllerToPresent.modalPresentationCapturesStatusBarAppearance = YES;

[self presentViewController:controllerToPresent animated:YES completion:nil];

有一些更多信息请点击此处 http://lxcid.com/2013/11/29/status-bar-remains-unchange-when-view-controller-is-pushed-presented-modally/。希望有帮助!

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

如何更新 StatusBar 样式作为自定义转换的一部分 的相关文章

  • 设置 TableView setEditing 时无法选择 UITableViewCell

    我希望能够选择多行 如下所示的默认邮件应用程序 我有一个名为编辑的按钮 可以调用 self myTableView setEditing YES animated YES 编辑按钮成功显示单元格左侧的圆圈 如上所示的邮件应用程序 但是 当我
  • Obj-C / Swift 项目中的致命陷阱异常

    我开始将 Swift 代码集成到我的 Obj C 项目中 一切都进展顺利 但今天 当我更新到 Xcode 6 1 时 事情变得很糟糕 我从之前运行良好的 Swift 代码中收到了许多 陷阱 异常 第一次崩溃位于我的 UIFont 扩展中 这
  • 如何消除禁用的 UIButton 的灰色外观

    我有一个 UIButton 我希望它处于禁用状态时与处于正常状态时看起来完全相同 现在它看起来有点灰色 不要使用enabled属性或setEnabled NO方法 而是使用 myButton setUserInteractionEnable
  • CALayer 抗锯齿不如 UIView 抗锯齿

    我一直在尝试使用 CALayer 制作圆形绘图的动画 一切都运行良好 但问题是 绘制的圆不够抗锯齿 它的边界有点太粗糙 或者如果使用光栅化则模糊 抗锯齿已启用 还尝试过 边缘抗锯齿遮罩 kCALayerLeftEdge kCALayerRi
  • Objective-C 中 typedef 枚举语句在哪里?

    我担心的一个基本问题 以下代码有效 并且 typedef 枚举被识别 但我收到一条警告消息 空声明中无用的存储类说明符 我在这里做错了什么吗 这是放置 typedef 枚举的最佳位置吗 import
  • Ios Swift制作字体切换粗体、斜体、boldItalic、正常而不改变其他属性

    我很惊讶 在 Swift 中简单地为现有字体设置粗体和斜体是如此复杂 我只是想通过在字体类上使用以下方法来简化事情 我希望将以下方法添加到已设置字体系列和字体大小的现有字体中 我需要保留这些并仅更改以下内容 setBold Shud 保留斜
  • NSMutableArray addObject: -[__NSArrayI addObject:]: 无法识别的选择器发送到实例

    我尝试从周日开始以 100 种方式初始化 NSMutableArray 但没有任何效果 我尝试将其设置为等于新分配和初始化的 NSMutableArray 只需分配并自行初始化变量 我能想到的每种组合都总是相同的结果 这是代码 Object
  • 如何在 box2d 中停止作用在物体上的力

    我正在 iPhone 上使用 box2d 来创建游戏 我的身体受重力影响向下移动 而不是向右或向左移动 它会被另一个物体击中 然后向右或向左移动 然后我有一个重置按钮 可以将身体移回到起点 唯一的问题是它仍在向右或向左移动 如何抵消球已经行
  • iphone opencv - 模板匹配

    我已经在我的 iphone 项目中实现了这个 OpenCV 构建 http aptogo co uk 2011 09 opencv framework for ios http aptogo co uk 2011 09 opencv fra
  • iOS Safari 通过单击按钮触发扫描信用卡

    您好 我目前正在创建一个测试应用程序 当用户单击文本字段名称或卡号时 扫描信用卡功能对我有用 我的问题是 我希望当用户单击 button1 时发生同样的情况 这应该打开相机来扫描卡并填充现有的文本字段 即名称 卡号和到期日期 额外的好处是
  • iOS:如何获取设备当前语言设置?

    我的应用程序中的一些功能应该基于其运行设备的语言设置 我想获取实际的语言而不是某些国家 地区设置 例如 如果语言是英语 我不在乎它是美国 英国 澳大利亚等 我很熟悉NSLocale对象 但它似乎与Region Format设置而不是Lang
  • 如何在 xcode 中使用相同的 nib 文件创建多个窗口

    我有一个使用表格视图作为界面的 iPhone 应用程序 每次用户点击其中一个表格单元格时 我想向用户显示另一个窗口 然而 我推入导航控制器的窗口的用户界面非常相似 因此 我决定制作一个 通用 nib 文件 以便在该通用 nib 文件的文件所
  • 观察 UIDatePicker 的变化

    我注意到没有委托来观察 UIDatePicker 中的变化 有没有一种方法可以在不确认任何内容的情况下检测选择器中何时进行更改 例如它旋转并落在新数字上的那一刻 我希望能够检测到这一点 我考虑过关键值观察 但我不认为有一个属性会立即改变 您
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 我在 NSDateComponentsFormatter 上的 allowedFractionalUnits 上做错了什么?

    基本上我想要的是获取仅以小时表示的时间间隔的值 而不将其四舍五入为完整小时 使用NSDateComponentFormatter https developer apple com library ios documentation Fou
  • 当视口设置为 user-scalable=no 时,iOS/移动 Safari 仍然会缩放?检查辅助功能设置!

    这个特定的 Mobile Safari 看似不可能且未记录 问题让我今天坚持了很长一段时间 当我弄清楚它时 我正要在这里发布一个有关它的问题 问题 虽然我设置了我的 iPad 网络应用程序仍然允许手动缩放 在浏览器中捏合 但只能在我的 iP
  • Apple 允许后台任务运行多长时间?

    我必须将一系列图像文件上传到数据库 因此 我偶然发现苹果后台执行指南 https developer apple com library ios documentation iPhone Conceptual iPhoneOSProgram
  • 如何在 UITableViewCell 上使用自定义初始值设定项?

    我有一个自定义 UITableViewCell 我想在我的表视图中使用它 这是我的单元格代码 class ReflectionCell UITableViewCell IBOutlet weak var header UILabel IBO
  • 如何连续关闭 2 个模态视图控制器?

    我有 2 个以模态方式呈现的视图控制器 A presents B which presents C 当我解雇C时 我也想解雇B 但我不知道该怎么做 解雇C self dismissModalViewControllerAnimated YE
  • 自定义事件多久才会出现?

    我正在尝试使用 Flurry 将分析跟踪添加到 iPhone 应用程序 我已经连接了 Flurry 并且它似乎可以很好地跟踪会话和使用情况 但是 我刚刚尝试添加自定义事件日志 但每当我查看 Flurry 分析 事件 页面时 它都会告诉我 您

随机推荐

  • 从云调度程序调用 Google 云函数时出现权限被拒绝错误

    我正在尝试调用 Google 云函数 该函数是由云调度程序触发的 Http 但每当我尝试运行云调度程序时 它总是显示权限被拒绝错误 httpRequest status 403 insertId 14igacagbanzk3b jsonPa
  • 测试 SMTP 服务器通过 C# 运行

    如何在不发送消息的情况下通过 C 测试 SMTP 是否启动并运行 我当然可以尝试 try send email to email protected cdn cgi l email protection catch log smtp is
  • 您使用什么 cscope 参考卡? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 带圆角的 NSVisualEffectView

    如何在 OS X 中显示带圆角的 NSVisualEffectView 我添加 NSVisualEffectView 的代码 let visualEffectView NSVisualEffectView frame NSMakeRect
  • Pandas 从重采样中检索添加行的索引

    我有一个缺少行的数据框 我对其进行插值和重新采样 我想知道是否有办法在重新采样时获取添加到数据帧的行的索引 这就是我创建 重新采样 插入数据帧的方式 import numpy as np import pandas as pd from d
  • 使用 write.table 时避免在列名和行名中使用引号 [重复]

    这个问题在这里已经有答案了 我在名为 data txt 的文件中有以下数据 pid 1 2 4 15 18 20 1 at 100 200 89 189 299 788 2 at 8 78 33 89 90 99 3 xt 300 45 5
  • 嵌套 ListView、StreamBuilder 和子集合

    我正在尝试创建一个嵌套的 ListView 但不知道是否可以在嵌套视图中组合 2 个流构建器 因为它不起作用 在带有子集合查询的第二个 StreamBuilder 中 似乎没有返回数据 我不明白为什么 当我对文档 ID 进行硬编码时 我没有
  • 通过组合字符串将不同的行归为一行

    我有一个这样的数据集 Column1 Column2 1 A 1 B 1 C 2 D 2 E 2 F 2 G 3 H 3 I 我想将它合并成这样的东西 Column1 Column2 1 A B C 2 D E F G 3 H I 是否可以
  • 如何在 Matplotlib 中指定类似箭头的线条样式?

    我想在 Matplotlib 中显示一组 xy 数据 以指示特定路径 理想情况下 将修改线条样式以使用类似箭头的补丁 我创建了一个模型 如下所示 使用 Omnigraphsketcher 看来我应该能够覆盖常见的之一linestyle声明
  • Azure DevOps Rest Api 是否返回正确数量的拉取请求?

    我们正在尝试收集有关拉取请求的信息 以便为我们的部门建立某些指标 完成拉取请求需要多长时间 Azure DevOps 提供了一个 API 来查询很多东西 包括拉取请求 我在这里查了一下用法 https learn microsoft com
  • 页面加载后自动执行.on()函数

    I use container on click contentEffects 使一些 jquery 代码在 ajax 调用后再次工作 不过 我希望 on 函数可以在页面加载后立即自动执行 并且无需click事件 那可能吗 请看一下我的网站
  • 如何使用 PHP 在文本区域中显示 Word 文档?

    我试图使用 com 类测试代码来显示 Word 文件 但我似乎无法得到答案并且仍在搜索 我遇到错误 有时程序根本不显示任何内容 请给我一些想法 我正在使用 PHP 4 如果站点托管在装有 Word 的 Windows 计算机上 您可以使用
  • 使用Core Data中的Cascade删除关系对象

    我希望使用核心数据执行一些简单的删除 但仅需要对此的一些建议 我有一个包含交易 名称 事件和日期实体的模型 该交易与其他每个实体都有链接 在应用程序中 当用户将信息添加到文本字段时 该信息会保存到 4 个选项卡的表格视图控制器中 第一个选项
  • 伽玛分布拟合误差

    对于分类任务 我想将伽玛分布拟合到两对数据 类内和类之间的距离人口 这是为了确定理论错误接受率和错误拒绝率 The fit Scipy returns puzzles me tough A plot of the data is below
  • 实现批量记录获取

    在程序开始时 我需要将数据从 MS Access 数据库 mdb 读取到下拉控件中 这样做是为了每当用户在该控件中键入内容时 应用程序都可以自动完成 不管怎样 从数据库中读取数据花了很长时间 所以我想我应该实现批量行获取 这是我的代码 CS
  • 有没有办法从 Symfony 应用程序中的 url 中删除 '/web' 而不将 'web' 目录的内容移动到根目录?

    我在使用 Symfony 创建应用程序时遇到一个问题 即 url 中出现 web 我找到了一种方法来摆脱这个问题 将 web 目录的内容移动到根目录 但我认为这不是一个好的开发实践 必须有其他方法 谁能告诉我是否还有其他方法可以做到这一点
  • C++ 类名注入

    根据标准 class 2 类名也被插入到类本身的范围中 这被称为注入类名 此外 basic scope pdecl 9 声明要点注入类名 第 9 条 紧跟在类定义的左大括号之后 最后 basic lookup classref 3 及其示例
  • 选择项目后如何完全折叠 SearchView?

    我已经为此苦苦挣扎了好几个星期 我有一个全局搜索 它提供了一个自定义列表视图 并在用户输入时提供建议 当用户选择一个选项时 我希望搜索视图返回到完全折叠的状态 相反 它会缩小 但仍保持稍微扩大的视图 我已经把我能找到的所有东西都扔到了这件事
  • 使用自动布局,如何使同一“行”上的两个标签的宽度是动态的(根据每个标签需要的宽度进行调整)?

    假设我有两个 UILabel 一个是 URL 一个是计时器 http website com link to specific story 9m 42s 但是 计时器 UILabel 的宽度变化很大 有时只是12s例如 其他时候是125h
  • 如何更新 StatusBar 样式作为自定义转换的一部分

    我使用的是 iOS 7UIviewControllerAnimatedTransitioning呈现模式的协议ViewController带有自定义动画 动画工作正常 但是我想要新呈现的ViewController具有与当前 VC 不同的状