在 iPhone 上拖动 UIScrollView 时,OpenGL ES 视图中的动画冻结

2023-12-20

我有一个动画透明 OpenGL ES 子视图(Apple 模板 EAGLView 类的修改),它绘制一个旋转球体。就像 Apple 的示例一样,CADisplayLink 用于可用的设备。

在同一屏幕上,有一个包含可以选择的 UIButtons 的 UIScrollView。当用户滚动 UIScrollView 时,我的 EAGLView 的动画冻结。此行为在 iOS Simulator 4.2 和 iPhone 2G 设备上的 iPhone OS 3.1.3 上重现。

除了编写我自己的滚动视图之外,还有什么想法可以防止 EAGLView 暂停?


Whether CADisplayLink滚动期间触发取决于将其添加到运行循环的模式。也许你在某个地方有这个:

[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

UIApplication添加了runloop模式,UITrackingRunLoopMode,用于“控件中的跟踪”,其中包括滚动视图何时滚动。因此,此时运行循环将退出默认模式,因此您的显示链接(以及任何计时器,NSURLConnections等,在默认模式中添加)将无法触发,直到恢复默认模式。

快速修复:将代码更改为:

[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

UITrackingRunLoopMode 被认为是常见模式之一。

花费太多时间中断 UIKit 可能会导致一些非常差的控制响应能力,因此您需要小心。这与主题有很大的分歧,但尽管 OpenGL 是模态的,因此对线程不是特别友好,但您可以使用 EAGLSharegroup 在单独的线程上进行渲染,然后将其推送到主线程上。


(2016) Swift3 中的示例...

let d = CADisplayLink(target: self, selector: #selector(ThisClassName.updateAlpha))
d.add(to: RunLoop.current, forMode: RunLoopMode.commonModes)


//and then, for example...
func updateAlpha() {
  let a = leader.layer.presentation()?.value(forKey: "opacity") as! CGFloat
  follower.alpha = a
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iPhone 上拖动 UIScrollView 时,OpenGL ES 视图中的动画冻结 的相关文章

  • iPhone 到 Mac 开发

    我是一名 iPhone 开发人员 非常了解该框架 随着 Mac 应用商店即将推出 我想了解有关 Mac 开发的更多信息 有没有好的指南 教程 等等 帮助过渡 我环顾四周并没有发现太多 谢谢您的帮助 您基本上需要了解之间的区别UIKit an
  • 需要访问tableView中的单元格:heightForRowAtIndexPath:

    我需要从以下位置访问表格中的单元格tableView heightForRowAtIndexPath 因为我想使用自定义单元格上的数据进行高度计算 我发现获取细胞的唯一方法是打电话tableView cellForRowAtIndexPat
  • 如何防止 MobileSafari/UIWebView 中的键盘自动完成?

    我正在 UIWebView 内的 字段上实现自己的自动完成功能 并且内置键盘自动完成功能会干扰用户体验 有没有办法使用 HTML 或 Javascript 向 iOS 发出信号 表明它不应该尝试自动完成 在我的评论中我提到使用 html 属
  • 删除iPhone沙盒(文档文件夹)中的所有文件?

    有没有一种简单的方法可以删除我保存在应用程序文档文件夹中的所有文件 图像 NSFileManager fileMgr NSFileManager alloc init autorelease NSError error nil NSArra
  • 收到 NSInvalidArguementException 错误

    我想这可能与过度释放有关 它不断崩溃if managedObjectContext save error 就像每三次调用该方法一样 当我添加 3 个练习时 更新 我注意到当我往返于不同的例程实例时会发生这种情况 2011 04 28 04
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • ASIHTTPRequest 登录页面

    我尝试制作一个 iPhone 应用程序 可以登录到使用 https 保护用户信息的 Web 应用程序 现在我陷入了登录页面 我不知道通过我的应用程序登录时如何检查用户网站中的真实帐户 即使我输入错误的帐户 我也只收到 200 的回复 这是我
  • 如何加载带有附加视图控制器的 xib 文件?

    我在 coverflow 组件中使用 xib 文件作为后视图 看起来不错 加载 xib 文件的代码是 NSArray array NSBundle mainBundle loadNibNamed TestMine owner nil opt
  • iPhone IOS5 Storyboard,如何使用自定义的 .xib 文件加载 UIViewController?

    我有一些来自旧 iOS4 项目的 UIViewController 它们使用的是在界面生成器中创建的 xib 我的新项目是为 iOS5 构建的 使用故事板 我正在尝试将 UIViewController 添加到故事板 但让它使用我已经拥有的
  • 创建 iPhone 与外部设备连接的硬件。阿杜伊诺?

    嗨 我需要创建一个简单的连接器 我想我可能需要创建一个arduino板 它将从应用程序中获取数据 然后将它们传输到外部设备 应用程序中有一个滑块可供用户调整 调整滑块时 应用程序只会将值从应用程序发送到我需要建立的连接 该连接将连接到外部设
  • UIStackView - 拖动以重新排序排列的子视图?

    我试图获得一些关于如何实现在 a 上发现的相同类型的 拖动重新排序 行为的建议 UITableView但在一个UIStackView 到目前为止 这就是我的想法 为每个按钮添加一个长按手势识别器arrangedSubviews 长按时 添加
  • 从 UIImageView 的中心对 UIImageView 进行动画处理

    我有一个UIImageView应该从动画size 0 0 gt 93 75 我有以下内容 UIView animateWithDuration 0 5 delay 0 options UIViewAnimationOptionTransit
  • stringWithUTF8String 的“不完整的通用字符名称”

    当我尝试将 utf 8 字符串转换为 NSString 时 如下所示 NSString s NSString stringWithUTF8String U0627 U0644 U0641 U0631 U0646 NSLog s 我收到编译错
  • UIScrollView 在缩放或滚动时阻止所有触摸

    当 UIScrollView 通过捏合手势或滚动进行缩放时 我无法按同一窗口中的任何其他按钮 有什么办法可以启用这种行为吗 这就像滚动视图具有独占触摸 尽管我尝试将其明确设置为NO 我在视图中有一个滚动视图 我希望它仅在用户按住滚动按钮时滚
  • iPhone 开发 - XMLParser 与 libxml2 与 TouchXML

    我找不到这些解析技术的比较 哪一种最常用 问候 穆斯塔法 NSXMLParser 是一个SAX http en wikipedia org wiki Simple API for XML解析器 这意味着它遍历 XML 文档 并通知您 通过委
  • 突出显示 PDF 文档 iPhone xcode 中的文本

    嗨朋友们 我正在使用 Web 视图开发一本电子书 我正在使用 PDF 文档加载 Web 视图 现在我想开发搜索功能 但我不明白如何实现它 所以请给我一个解决方案 提前致谢 而不是使用UIWebView 您可能想考虑使用 Quartz 2DC
  • 用我自己的视图替换 UIViewController 根视图

    我正在尝试用子类 UIView 替换 UIViewController 根视图 在 iPhone SDK 的 UIViewController 类参考的概述部分中 有这样的说明 您使用 UIViewController 的每个实例来管理全屏
  • 有没有办法使用 setValue:forKey 来获取 C 类型变量?

    我在对象上设置了一些属性 大部分是GLfloat我想知道是否有办法使用 self setValue id value forKey id key 那需要一个c风格的变量吗 不一定是这样setValue forKey是否有替代方案 如果有可用
  • 将 id 传递给 calloutAccessoryControlTapped

    当点击附件按钮时 我需要传递 itemId 这样我就可以识别要传递到详细视图的项目 So far 添加注释 for id row in self detailItem Item i Item row CLLocationCoordinate
  • 当Text超过Height时如何增加UITextView的高度

    我有一个 UITextView 当我在 5 6 行后输入数据时 数据正在向上滚动并且看不到 当输入的文本超过高度时 是否有任何属性可以用来增加 UITextView 的高度 请建议大家 使用此代码使 UITextView 的高度与其内部内容

随机推荐