UIPageViewController 内的 UINavigationController 具有垂直滚动、导航栏高度损坏

2024-01-09

我使用 UIPageViewController 来显示几个控制器,第一个是 UINavigationController,乍一看它看起来不错,但是当您滚动到下一个时,第一个导航栏会更改高度,并将标题直接放在状态栏下方。我已经搜索了堆栈溢出,但找不到我的问题的任何答案。

简单演示:https://github.com/augard/PageScrollingBug https://github.com/augard/PageScrollingBug


我用一种非常hacky的方式修复了这个问题——子类化UINavigationController并混合它的navigationBar's setCenter:方法(用Aspects https://github.com/steipete/Aspects图书馆):

// In subclassed UINavigationController:

- (void) viewDidLoad
{
    [super viewDidLoad];

    // This just fixes this bug: http://stackoverflow.com/q/23471624/299063
    UINavigationBar *navigationBar = self.navigationBar;
    [navigationBar aspect_hookSelector:@selector(setCenter:) withOptions:AspectPositionInstead usingBlock:^(id<AspectInfo> aspectInfo)
    {
        NSValue *centerValue = aspectInfo.arguments[0];
        CGPoint center = [centerValue CGPointValue];
        CGPoint fixedCenter = CGPointMake(center.x, 20 + navigationBar.bounds.size.height/2);
        [[aspectInfo originalInvocation] setArgument:&fixedCenter atIndex:2];
        [[aspectInfo originalInvocation] invoke];
    }
    error:nil];
}

我还必须设置automaticallyAdjustsScrollViewInsets to NO在导航控制器的子控制器中,否则导航栏在第一次出现时仍然会出现错误的位置:

// In child controller of UINavigationController.
self.automaticallyAdjustsScrollViewInsets = NO;

也许有正确的方法可以做到这一点,但我没有时间。

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

UIPageViewController 内的 UINavigationController 具有垂直滚动、导航栏高度损坏 的相关文章

  • 移动 Safari 中的文件上传和 EXIF

    正如这些问题中所指出的 在某些情况下 iOS 上上传的照片的地理位置和其他 EXIF 元数据会被删除 在 safari 中 https apple stackexchange com questions 326789 gps exif fr
  • prepareForSegue 和代表

    我有一个有两个 segue 的应用程序 在其中一个 Segue 中 当前视图控制器成为委托 而另一个则不是 void prepareForSegue UIStoryboardSegue segue sender id sender if s
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • iOS UITableViewCell 配件在左侧?

    对于我的应用程序 我想要一些可以同时具有复选标记和详细信息披露按钮的单元格 也就是说 我希望它们看起来与 iOS 设置中的 Wi Fi 网络选择一模一样 左侧的复选标记 中间的内容 右侧的详细信息披露按钮 有没有正确的方法来做到这一点 或者
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • 编写支持 iOS 3.1.3 和 iOS 4.x 的 iOS 应用程序时的陷阱

    我想编写一个可以在 iOS 3 1 3 到 iOS 4 1 上运行的应用程序 我知道如何设置部署目标和基础 SDK 阅读 Apple 文档后 它很大程度上依赖于检查类是否可用和 或实例是否响应特定选择器 现在我的问题是 如果 Apple 从
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • iPad 3 中配备 Xcode 4.2 和 Retina 的 iOS 5.1

    我有一台装有 Mac OS X Snow Leopard 的 Mac 我可以添加 iOS 5 1 吗 使用 iPad 3 的新分辨率 我们将如何处理图像 因为如果该应用程序将在 iPhone 3GS 4 和 iPad 3 中运行 我认为我们
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • 将WAR部署到WebSphere 9需要3个小时

    过去将 WAR 部署到 WebSphere 8 5 5 0 需要 3 分钟 将相同的 WAR 部署到 WebSphere 9 0 0 2 需要 3 个小时 这是 WebSphere 9 0 0 2 中错误的表现吗 有人有类似的经历吗 更新
  • iphone界面发光效果问题

    我想在这个名为 convert 的应用程序中实现我认为是 UILabels 或者可能是自定义控件 的发光效果 我认为该应用程序看起来非常简洁 我正在尝试为我自己的应用程序实现类似的效果 有什么帮助吗 此致 david 替代文本 http w
  • 如何为 Excel 创建 GUI 插件?

    我在 Google 上进行了一些研究 但仍然找不到 Visual Studio 中的项目 我想为 Excel 创建一个 GUI 插件 例如带有 Windows 窗体的功能区上的停靠窗口 这是 Visual Studio 中的什么项目 我已经
  • 将控件添加到 Office 中的现有功能区组 (VSTO)

    我找到了很多关于如何向现有功能区添加新组的示例 这效果很好 我不知道如何将新控件添加到现有功能区上的现有组中 假设我想将自己的命令添加到 审阅 选项卡上的 校对 组中 我正在 VS2010 中为 Office2010 开发此程序 但我想同样
  • Spring Boot中增加Tomcat的连接超时

    如何增加超时 以便在处理响应之前 请求不会超时 Spring Boot 中的 Tomcat 设置 server tomcat max connections 2000 server tomcat max threads 200 server
  • 一个 CIImage 中有多个 CIFilter?

    我有两个 CIFilter 曝光和色调 我需要将过滤器组合到一个 UIImage 上 我该怎么办 下面是我到目前为止所拥有的一些代码 CIFilter hueFilter CIFilter exposureFilter CIImage ad
  • 如何在Python中将数字四舍五入为有效数字

    我需要对要在用户界面中显示的浮动进行舍入 例如 一位有效数字 1234 gt 1000 0 12 gt 0 1 0 012 gt 0 01 0 062 gt 0 06 6253 gt 6000 1999 gt 2000 有没有一种使用 Py
  • Flexbox - 在项目内垂直对齐未知高度的元素[重复]

    这个问题在这里已经有答案了 给予是没有问题的一个元素Flexbox 项目内的高度相同 但我无法让它与多个项目一起使用 Fiddle https jsfiddle net no9jkj7m https jsfiddle net no9jkj7
  • 使用 LayoutInflaterCompat.setFactory 的 Android 菜单项字体

    我正在尝试更改菜单项的字体 根据这个答案 https stackoverflow com a 29903311 2311651 我在用着LayoutInflaterCompat setFactory 我的项目中使用支持库22 1 1 我的代
  • 如何返回完全解决的承诺?

    我正在尝试使用 q 编写一些测试 尝试存根 Promise 等 我想知道是否有一种方法可以返回完全解析的 Promise 就像可以使用whenjs when 要返回的东西 之类的东西来做到这一点那将等于这个 function fullyRe
  • Google 云端硬盘文件 etag

    文件资源的 etag 如何工作 即使文件没有进行任何更改 它看起来也会发生变化 有没有办法获取校验和或仅在文件更新时更改的内容 感谢您的帮助 当文件的元数据更改时 文件的 Etag 也会更改 如果您只想监视文件内容的更改 可以使用md5Ch
  • 我不明白 JavaScript 上的 Crockford:前进之路

    在一场名为 前进之路 的讲座中 道格拉斯 克罗克福德 Douglass Crockford 表示 他不再在 JavaScript 中使用 new 并且正在放弃 this 他说 JavaScript 的优点与其说是原型继承 不如说是无类继承
  • 如何消除单击JavaFX按钮时的展开效果?

    单击 JavaFX 按钮时如何消除小展开效果 还有我怎样才能让它像菜单按钮一样工作 当我按下它以保持聚焦状态直到我按下另一个 菜单 按钮时 有没有办法将节点分组到同一焦点 三个问题一个的价格 单击 JavaFX 按钮时如何消除小展开效果 当
  • 可执行代码处无法到达断点

    我有两个 DLL 一个用本机 C 编写 另一个用 C CLI 编写 前者被注入到进程中 并在稍后的时间点加载后者 在调试时 我注意到本机 DLL 的断点运行正常 而其他断点则运行不正常 即使其代码正在执行 断点显示此消息 不会命中断点 没有
  • 从 C# 的 PowerShell 脚本调用特定函数

    有没有办法从 C 代码的 PowerShell 脚本中调用特定函数 我已经启动并运行了使用 PowerShell 脚本执行字符串的基本示例 如果我有一个包含许多函数的文件 并且我只想将特定函数加载到 C 中并执行它 该怎么办 如何才能做到这
  • FileNotFoundError: [Errno 2] 没有这样的文件或目录: '/content/drive/MyDrive/Santillana/geckodriver' 在 Google Colab 中使用 Selenium 库

    我正在尝试在 Google Colab 中使用 Selenium 但是当我尝试运行 Firefox 实例时出现一些错误 我点击了这个链接 硒文档 https www selenium dev documentation webdriver
  • 新手在 Clojure 中转换 CSV 文件

    我对编程既是新手又是老手 大多数时候我只是在工作中编写很多小的 Perl 脚本 当我想学习 Lisp 时 Clojure 就出现了 所以我也想在不懂 Java 的情况下学习 Clojure 这很艰难 但到目前为止很有趣 我见过几个与我的问题
  • Spring Boot 3.x 升级。无法解析 org.springframework.boot:spring-boot-gradle-plugin:3.0.1

    我最近想将我的 kotlin 项目从 spring boot 2 7 x 升级到 3 0 1 我使用 Java 17 temurin gradle 7 6 在 IntelliJ 中 我在通过 gradle 导入项目时收到以下错误消息 A p
  • C 中的固定地址变量

    对于嵌入式应用 通常需要访问外设寄存器的固定存储位置 我发现执行此操作的标准方法如下所示 access register foo reg which is located at address 0x100 define foo reg in
  • UIPageViewController 内的 UINavigationController 具有垂直滚动、导航栏高度损坏

    我使用 UIPageViewController 来显示几个控制器 第一个是 UINavigationController 乍一看它看起来不错 但是当您滚动到下一个时 第一个导航栏会更改高度 并将标题直接放在状态栏下方 我已经搜索了堆栈溢出