UITableView 在设备旋转后纠正滚动位置

2023-12-14

我正在构建类似书籍阅读器的东西。当用户旋转手机时我想增加字体大小。我正在使用一个UITableView显示文本块。

问题是,增加字体大小会增加表格视图中行的高度,如果我在纵向模式下阅读第 320 段,我会在横向模式下得到 280 或类似的内容。

我使用以下代码设置了一个轮换通知侦听器:

    UIDevice *device = [UIDevice currentDevice];                
    [device beginGeneratingDeviceOrientationNotifications];
    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self                                
           selector:@selector(orientationChanged:)
               name:UIDeviceOrientationDidChangeNotification
             object:device];

并尝试在旋转之前保存最后一段索引,然后在旋转后向下滚动到它,但我似乎无法达到预期的效果。

处理这种情况的最佳方法是什么?我在哪里实际实现轮换的“之前”和“之后”状态?

我希望它能在 iOS 4+ 上运行。


Swift 3Said Ali Samed 的回答版本(willRotateToInterfaceOrientation and didRotateFromInterfaceOrientation已弃用):

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
    coordinator.animate(alongsideTransition: { context in
            // Save the visible row position
            self.visibleRows = self.tableView.indexPathsForVisibleRows!
            context.viewController(forKey: UITransitionContextViewControllerKey.from)
        }, completion: { context in
            // Scroll to the saved position prior to screen rotate
            self.tableView.scrollToRow(at: self.visibleRows[0], at: .top, animated: false)
        })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITableView 在设备旋转后纠正滚动位置 的相关文章

  • Parse.com 和 Facebook 登录,运行无限循环

    我将 Parse 和 Facebook iOS SDK 都更新到了最新版本 当我尝试使用 Facebook 登录时 我的应用程序崩溃了 从调试器中我可以看到它正在无限循环中调用 3 4 个方法 我的登录代码如下所示 void openSes
  • 从 iOS 应用程序内的 Junos Pulse 获取用户凭据

    我正在通过 Junos Pulse 在 iPad 中建立 VPN 连接 以进入我组织的 Intranet 谁能告诉我是否有任何 iOS api 或 SDK 可用于获取在 iOS 应用程序内的 Junos pulse 中输入的用户凭据 Jun
  • 将自己的结构传递到 opengl es 2.0 着色器中

    我想尝试 OpenGL ES 2 0 编程指南 一书中的照明示例 在着色器中他们制作了两种结构 struct directional light vec3 direction normalized light direction in ey
  • Objective-c 中的块递归

    当执行涉及 Objective C 块的递归时 我在 iOS 应用程序中收到 EXC BAD ACCESS 信号 这是简化的代码 void problematicMethod FriendInfo friendInfo onComplete
  • 在带有 Storyboard 的 XCode 4 中以模态方式推送视图时,出现“对开始/结束外观转换的不平衡调用”警告

    在网上进行了一些研究但没有成功后 我来这里向您询问有关我的警告的问题 实际上 我有一个带有导航控制器的视图 V1 我想在 V1 完成加载时推送模态视图 V2 所以我用performSegueWithIdentifier方法 我正在使用故事板
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 样式 ::-webkit-scrollbar-track 不起作用

    我正在尝试设置滚动条轨道的样式 每当我设计曲目时 div webkit scrollbar track background color blue 没有什么变化 每当我设置滚动条样式时 div webkit scrollbar backgr
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • Ajax - 限制列表的加载,然后在滚动上加载其余部分

    我有一家商店 在一个页面上显示某个类别的所有产品 这是店主喜欢的方式 因此不能选择分页 为了缩短某些重类别的加载时间 我希望实现一个可以加载许多产品的脚本 li s然后在页面滚动上加载另一组 页面就是用这个结构生成的 div ul clas
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • 防止 AlertView 被解雇

    任何人都可以帮助我防止在其按钮单击事件上解雇警报视图吗 我有一个 textview 作为我的alertView 的子视图 如果 textview 值为 nil 我不想关闭它 因为这是一个非常老的问题 但我得到了一个解决方案 并且如果其他开发
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • 为什么 iPhone 上的纹理图像需要具有二维幂?

    我正在尝试解决 iPhone 上的闪烁问题 open gl es game 我有一些没有 2 维的图像 我将用具有适当尺寸的图像替换它们 但为什么尺寸需要是 2 的幂 大多数系统 甚至许多现代显卡 需要 2 的幂纹理的原因是 mipmap
  • UIWebView Bug:-[UIWebView cut:]:无法识别的选择器发送到实例

    In the UIWebView 如果包含文本的输入元素具有焦点 并且按下按钮导致输入失去焦点 则随后双击输入以重新获得焦点并从出现的弹出栏中选择 剪切 或 复制 或 粘贴 会导致这UIWebView因错误而崩溃 UIWebView cut

随机推荐

  • pthread 和 semaphore 在 osx maverick 10.9 中不适用于我

    我有以下涉及 pthread 和信号量的简单程序 我使用的是 os x Maverick 10 9 我使用 makefile 来编译程序 而不是 xcode 我使用c 11 include
  • 只需检查多个语句 C#

    目前正在开发一款小型主机游戏 想知道是否有人有一种简单的方法来缩短这样的内容 if map playerX 1 playerY R1 map playerX 1 playerY R2 map playerX 1 playerY R3 map
  • 如何在 SQL Server 中使用 NOT IN 创建过滤索引

    我想创建唯一的非聚集索引 它限制特定列的某些记录 我使用 NOT IN 来过滤它 但由于 NOT IN 我收到错误 有什么替代方法可以做到这一点 CREATE UNIQUE NONCLUSTERED INDEX UN Student ON
  • rabbitmq中预取计数与无ack有什么区别

    我需要知道rabbitmq中预取计数与无ack之间有什么区别 还 以下陈述有什么区别 如果我设置预取计数为 10 是否会创建 10 个消费者线程 或者 如果我注册 10 个消费者 它会创建 10 个线程吗 以上哪种方式效率更高 专门针对 s
  • SVN for Emacs:如何设置作者姓名和保存密码?

    我似乎无法在谷歌任何地方找到这个 我正在尝试从 eclipse 迁移到 emacs 但我一生都无法弄清楚如何设置我的 svn 作者姓名 这样它就不会默认作者姓名或保存密码 这样我就不必输入它在任何一次 如果这很重要的话 我是 Ubuntu
  • 如何通过cleartool命令将文件夹中的所有文件添加到源代码管理中?

    我有一个文件夹 其中有很多文件和子文件夹 通过 UI 将其添加到源代码管理会消耗很多时间 如何使用cleartool将所有文件 包括子文件夹内的文件 添加到源代码管理 我使用的是clearcase UCM 正如 如何使用 ClearCase
  • 如何使用 JMeter 中的正则表达式提取器提取某些值?

    如果我有两个相同的标签和相同的属性 唯一的区别是值 我如何提取第二个
  • 网络聊天是否有“重置”按钮?

    开箱即用的网络聊天默认按钮集是 发送 按钮和 上传文件 按钮 网络聊天是否有可用的 重置 按钮 可以结束当前对话并为同一用户从头开始新对话 是否需要打开一些配置或样式选项才能直观地看到 重置 按钮 聊天 对话历史记录需要保持完整 它不应该清
  • 验证 python passlib 生成的密码哈希值

    我需要验证使用 python 生成的密码哈希值passlib 我的目标是使用 passlibpbkdf2 sha512对所有用户密码进行哈希处理的方案 但是 由于我们后端的性质 我需要从 php 脚本 js 和 java 验证此密码 我还没
  • 在 C 中调用 GNU Octave 函数?

    我想使用矩阵代数和优化 我已经测试了不同的矩阵代数 C 和 C 库 但这些库的问题是它们不能像 GNU Octave 那样处理垃圾数据 C 和 C 中的垃圾数据会降低到 e 8 但在 GNU Octave 中 它将降低到 e 17 如果您计
  • Razor 类库也可以打包静态文件(js、css 等)吗?

    Maybe 与此重复已经 但由于该帖子没有任何答案 我发布这个问题 The new 剃刀类库很棒 但它不能打包库文件 如 jQuery 共享 CSS 我能否以某种方式在多个 Razor 页面项目中重用 CSS 无论是使用 Razor 类库还
  • Android 可以替代 jtable 吗?

    android 3 x sdk 11 或更高版本 是否有类似于 jtable 对象的小部件 我不是从头开始开发一个小部件 使用 gridview 或 tablelayout 而是寻找一个随时可用的小部件 TIA Bob 更新 我发现了这篇优
  • iPhone sdk调用拦截

    我们正在开发一个应用程序 该应用程序的功能是 当我们自动接到电话时 我们必须通过短信 语音消息回复 那么 您能告诉我们在iPhone中是否可以实现 如果意味着指导我们构建该应用程序 提前致谢 布莱特 拉吉 目前的SDK无法以这种方式访问 手
  • 如何获取 pygtk 窗口的大小?

    我正在尝试使用 gtk window get size 但它总是只返回默认的宽度和高度 文档说 get size 方法返回一个包含当前宽度和 窗户的高度 如果窗口不在屏幕上 则返回 PyGTK 将向窗口管理器建议初始窗口的大小 尺寸 get
  • 将科学记数法转换为十进制 pandas python

    可能这是一个老问题 我在下面发现了类似的问题 但我仍然可以在输出文件中看到科学记数法 抑制 pandas 中的科学记数法 熊猫读科学计数法并改变 Python Pandas 科学记数法不一致 我尝试合并set option and df a
  • 扩展 EntityType 以允许通过 AJAX 调用设置额外的选择

    我尝试创建 Symfony 自定义类型延伸核心 entity type 但我想用它选择2版本4 0 0 ajax 现在适用于 select html 元素 而不是像以前那样适用于隐藏的 input 此类型应创建一个空选择 而不是扩展 实体
  • 从 const 成员函数中将“this”返回为非常量

    我想在类上进行方法链接Point below include
  • Curl 无法验证 Verisign 颁发的通配符 SSL 证书

    我有一个脚本需要使用 cURL 安全连接到网站 foo bar com 该网站由 bar com 的通配符 SSL 证书覆盖 通配符证书由 Verisign 颁发 所有浏览器都信任它 没有任何问题 但是 我无法让 PHP cURL 连接 至
  • VS Code 仅显示 1 行可能的导入路径。如何将其转换回默认列表框?

    我想我在 vs code 中做了一些设置更改 这使得我的导入语句看起来像这样 默认 VS Code 导入预览显示 3 个或更多路径 我应该更改什么选项才能将其恢复为默认列表框视图 我的设置 json 上次 vscode 更新到 v1 51
  • UITableView 在设备旋转后纠正滚动位置

    我正在构建类似书籍阅读器的东西 当用户旋转手机时我想增加字体大小 我正在使用一个UITableView显示文本块 问题是 增加字体大小会增加表格视图中行的高度 如果我在纵向模式下阅读第 320 段 我会在横向模式下得到 280 或类似的内容