问题标签 [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.
ios - CADisplaylink模拟器和物理设备的区别
我一直在使用 GLKView 构建一个基于 OpenGL 的应用程序,渲染方法由 CADisplaylink 触发。
到目前为止一切顺利,至少在模拟器上。但是当我在物理设备上运行它时,我的更新例程只被触发一次 - 在启动时。
我了解模拟器和物理设备之间存在许多差异,但我希望有人可以阐明 CADisplaylink 特有的任何内容以及可能导致它不触发的原因?
我的设置是这样的:
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(见上文)很容易:
然后替换代码中的所有实例
和
(这将暂停显示链接的更新)
ios - 如果设备被锁定,CADislayLink 不会触发
编辑:如果应用程序在后台运行,则CADislayLink
用于监控AVAudioRecorder
仪表不是一个好主意。如果设备休眠(在我的情况下是锁定设备),它将停止触发。解决方案是使用NSTimer
。这是导致我的问题的代码
解决方案:改用 NSTimer
AVAudioRecorder
无论我们使用AVAudioSessionCategoryRecord
或,下面的代码都可以完美地工作AVAudioSessionCategoryPlayAndRecord
。
原始问题:到目前为止,我正在创建一个记录声音的应用程序,即使它处于后台模式。这很像iTalk。
一切都近乎完美,我的应用程序可以在前台/后台录制(通过注册后台模式 -链接),但如果设备被锁定(由用户或自身设备),它会暂停/停止。
我尝试了 iTalk,在这种情况下效果很好。我还从 iTalk 得到了一个提示:它在锁屏上有音乐控制,而我的应用程序没有。
这是我的配置代码AVAudioSession
和AVAudioRecorder
如果您能提供任何信息,我将不胜感激。谢谢大佬!
ios - 当 glsl 运行时间过长时,我可以让它退出循环吗?
我正在做一些 glsl 分形,如果它们花费太长时间来保持帧速率,我想让计算保释(无需弄清楚每个现有设备和任何未来设备的好处)。
如果有一个计时器,我可以每 10 次迭代或其他东西检查一次,那就太好了……
如果做不到这一点,似乎最好的方法可能是跟踪渲染前一帧(或前 N 帧)所需的时间并将“迭代到”数字动态更改为统一......?
还是其他什么建议?:)
ios - 如何跟踪屏幕渲染器
如何将对象作为时间的函数移动React-Native
?
在本机iOS中,我这样做:
或者,我如何跟踪屏幕渲染React-Native
?
ios - 如何在 mainRunloop 中使用 CADisplaylink 循环调用我更改视图位置以显示动画的方法
我想在我的视图中显示一个动画。所以我CADisplaylink
将它用作计时器,以便它在一秒钟内调用更新方法60 次(60FPS)。
但是当同一个superview中的tableview重新加载时,CADisplaylink
每秒只调用40-50次(40-50FPS)。
我该如何解决?
uiview - 如何在IOS中“动画”改变视图的形状?(即改变它的路径从一个到另一个)
如何“动画”更改基于形状的自定义 UIView,从一种形状到另一种形状?
例如,创建一个看起来像形状的 UIView,使用 UIBezierPath 创建。但是,您是否希望此视图对象以“动画”样式从自定义形状 1 更改为自定义形状 2?所以我可以使用 UIBezierPath 创建两个单独的路径来表示这两个形状,但我不清楚如何“动画”从一个移动到另一个?
也不确定“动画”是否是正确的术语。例如,如果这本质上是不可动画的,那么也许我的意思是“视觉上变形”对象的视图从一个到另一个。
我正在阅读这些内容,但仍然不太了解:UIBezierPath、CAShapeLayer、CADisplayLink、
ios - 使用 CADisplayLink 的 UIImageView 旋转动画 - 跟踪旋转
有人建议我尝试CADisplayLink
旋转UIIMageView
. 我正在使用 Storyboard 构建这个应用程序。
当点击屏幕时,我需要开始和停止动画。我还需要跟踪点击屏幕时旋转停止的角度。
我在这里找到了本教程,但它对我并没有帮助。
我还找到了几个小例子(这里是一个),但我无法让它真正动画化。从我从上面的例子中得到的,我的图像旋转了一次,然后就停止了。
除此之外,我真的找不到一个很好的教程或示例来说明如何连续CADisplayLink
旋转我的UIImageView
,直到被点击,然后在再次点击时继续旋转,最后存储旋转角度。
为了让您了解我想要实现的目标,它基本上是一个钟面,当时钟指针旋转时,您可以通过点击来启动和停止它,并检索角度。
有人知道一个很好的例子吗?或者也许可以在这里帮助我。谢谢。
更新/编辑
在我的应用程序中使用下面 Rob 的很棒的 Obj-C 答案非常有效。如果有人感兴趣,这就是我跟踪旋转角度并将其显示到屏幕上的方式:
每次HandleDisplayLink
调用时,我都会调用这个方法:[self calculateDisplayAngle];
方法很简单:
ios - 如何将 CADisplayLink 用于特定按钮?
我正在尝试制作一个应用程序,我必须在其中触摸button
正在向上移动屏幕的人。我正在使用CADisplayLink
这个。我的代码中的问题是它创建了一个新按钮而不是使用特定按钮:
谢谢你。安东
ios - 如何暂停 CADisplayLink?
我的应用程序有问题。我想要发生的是当我单击button2时,它消失并停止移动。现在发生的事情是,当我单击 button2 时,它会消失但不会停止移动(即使它隐藏)。有什么帮助吗?代码:
谢谢你。安东