问题标签 [cadisplaylink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
332 浏览

ios - CADisplaylink模拟器和物理设备的区别

我一直在使用 GLKView 构建一个基于 OpenGL 的应用程序,渲染方法由 CADisplaylink 触发。

到目前为止一切顺利,至少在模拟器上。但是当我在物理设备上运行它时,我的更新例程只被触发一次 - 在启动时。

我了解模拟器和物理设备之间存在许多差异,但我希望有人可以阐明 CADisplaylink 特有的任何内容以及可能导致它不触发的原因?

我的设置是这样的:

0 投票
2 回答
2457 浏览

swift - 使用 Swift 将实时秒表计时器格式化为百分之一

我有一个应用程序使用 NSTimer 以厘秒(0.01 秒)的更新间隔将正在运行的秒表以字符串格式显示为 00:00.00 (mm:ss.SS)。(基本克隆了iOS内置秒表集成到实时运动计时数学题中,未来可能需要毫秒精度)

我使用(滥用?)NSTimer 来强制更新 UILabel。如果用户按下 Start,这是用于开始重复该功能的 NSTimer 代码:

这是上面 NSTimer 执行的函数:

将至少有 2 个显示链接同时运行。一旦所有其他元素都在起作用,这种方法会不会太低效?

当用户按下停止/暂停/重置时,显示会在不使用 NSTimer 的情况下更新。我没有找到任何直接翻译成 Swift 的东西。我相当肯定我正在使用一种低效的方法来强制在 UIView 中快速更新文本 UILabel。

更多详细信息:我正在为正在运行的计时器格式 (mm:ss.SS) 编写不那么混乱的代码。完成后我将再次更新。

更新:感谢 Rob 和 jtbandes 回答我的两个问题(格式化方法和显示更新方法)。用 CADisplayLink() 替换 NSTimer(见上文)很容易:

然后替换代码中的所有实例

(这将暂停显示链接的更新)

0 投票
1 回答
276 浏览

ios - 如果设备被锁定,CADislayLink 不会触发

编辑:如果应用程序在后台运行,则CADislayLink用于监控AVAudioRecorder仪表不是一个好主意。如果设备休眠(在我的情况下是锁定设备),它将停止触发。解决方案是使用NSTimer。这是导致我的问题的代码

解决方案:改用 NSTimer

AVAudioRecorder无论我们使用AVAudioSessionCategoryRecord或,下面的代码都可以完美地工作AVAudioSessionCategoryPlayAndRecord

原始问题:到目前为止,我正在创建一个记录声音的应用程序,即使它处于后台模式。这很像iTalk

一切都近乎完美,我的应用程序可以在前台/后台录制(通过注册后台模式 -链接),但如果设备被锁定(由用户或自身设备),它会暂停/停止。

我尝试了 iTalk,在这种情况下效果很好。我还从 iTalk 得到了一个提示:它在锁屏上有音乐控制,而我的应用程序没有。

在此处输入图像描述

这是我的配置代码AVAudioSessionAVAudioRecorder

如果您能提供任何信息,我将不胜感激。谢谢大佬!

0 投票
1 回答
45 浏览

ios - 当 glsl 运行时间过长时,我可以让它退出循环吗?

我正在做一些 glsl 分形,如果它们花费太长时间来保持帧速率,我想让计算保释(无需弄清楚每个现有设备和任何未来设备的好处)。

如果有一个计时器,我可以每 10 次迭代或其他东西检查一次,那就太好了……

如果做不到这一点,似乎最好的方法可能是跟踪渲染前一帧(或前 N 帧)所需的时间并将“迭代到”数字动态更改为统一......?

还是其他什么建议?:)

0 投票
2 回答
120 浏览

ios - 如何跟踪屏幕渲染器

如何将对象作为时间的函数移动React-Native

在本机iOS中,我这样做:

或者,我如何跟踪屏幕渲染React-Native

0 投票
1 回答
667 浏览

ios - 如何在 mainRunloop 中使用 CADisplaylink 循环调用我更改视图位置以显示动画的方法

我想在我的视图中显示一个动画。所以我CADisplaylink将它用作计时器,以便它在一秒钟内调用更新方法60 次(60FPS)。

但是当同一个superview中的tableview重新加载时,CADisplaylink每秒只调用40-50次(40-50FPS)。

我该如何解决?

0 投票
1 回答
2275 浏览

uiview - 如何在IOS中“动画”改变视图的形状?(即改变它的路径从一个到另一个)

如何“动画”更改基于形状的自定义 UIView,从一种形状到另一种形状?

例如,创建一个看起来像形状的 UIView,使用 UIBezierPath 创建。但是,您是否希望此视图对象以“动画”样式从自定义形状 1 更改为自定义形状 2?所以我可以使用 UIBezierPath 创建两个单独的路径来表示这两个形状,但我不清楚如何“动画”从一个移动到另一个?

也不确定“动画”是否是正确的术语。例如,如果这本质上是不可动画的,那么也许我的意思是“视觉上变形”对象的视图从一个到另一个。

我正在阅读这些内容,但仍然不太了解:UIBezierPath、CAShapeLayer、CADisplayLink、

0 投票
1 回答
994 浏览

ios - 使用 CADisplayLink 的 UIImageView 旋转动画 - 跟踪旋转

有人建议我尝试CADisplayLink旋转UIIMageView. 我正在使用 Storyboard 构建这个应用程序。

当点击屏幕时,我需要开始和停止动画。我还需要跟踪点击屏幕时旋转停止的角度。

我在这里找到了本教程,但它对我并没有帮助。

我还找到了几个小例子(这里是一个),但我无法让它真正动画化。从我从上面的例子中得到的,我的图像旋转了一次,然后就停止了。

除此之外,我真的找不到一个很好的教程或示例来说明如何连续CADisplayLink旋转我的UIImageView,直到被点击,然后在再次点击时继续旋转,最后存储旋转角度。

为了让您了解我想要实现的目标,它基本上是一个钟面,当时钟指针旋转时,您可以通过点击来启动和停止它,并检索角度。

有人知道一个很好的例子吗?或者也许可以在这里帮助我。谢谢。

更新/编辑

在我的应用程序中使用下面 Rob 的很棒的 Obj-C 答案非常有效。如果有人感兴趣,这就是我跟踪旋转角度并将其显示到屏幕上的方式:

每次HandleDisplayLink调用时,我都会调用这个方法:[self calculateDisplayAngle];

方法很简单:

0 投票
1 回答
113 浏览

ios - 如何将 CADisplayLink 用于特定按钮?

我正在尝试制作一个应用程序,我必须在其中触摸button正在向上移动屏幕的人。我正在使用CADisplayLink这个。我的代码中的问题是它创建了一个新按钮而不是使用特定按钮:

谢谢你。安东

0 投票
2 回答
1080 浏览

ios - 如何暂停 CADisplayLink?

我的应用程序有问题。我想要发生的是当我单击button2时,它消失并停止移动。现在发生的事情是,当我单击 button2 时,它会消失但不会停止移动(即使它隐藏)。有什么帮助吗?代码:

谢谢你。安东