gpt4 book ai didi

objective-c - 核心图形- drawRect : not getting called frequently enough

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:51:44 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个 UIViewController,其中包含一个子类化的 UIView(以及其他几个元素)。在名为 DrawView 的 UIView 内部,在我的 drawRect: 方法中,我绘制了一个表格网格类型的东西,并在网格上绘制了一个 CGPoints 数组。当用户点击屏幕时,它会调用 touchesBegan:withEvent: 并检查以找到网格上离触摸最近的点,将一个点添加到 drawRect: 的数组中code>方法从中提取点,并调用[self setNeedsDisplay]。当用户在屏幕上移动他们的手指时,它会检查该点是否从上次位置发生变化,并更新该点并在必要时调用 [self setNeedsDisplay]

这在模拟器中效果很好。然而,当在真正的 iPhone 上运行时,它运行得非常慢,当你四处移动手指时,它在绘制点时滞后。我读过运行计算将点放在不同线程中的位置可以提高性能。有没有人有这方面的经验,知道这是事实?还有其他减少延迟的建议吗?

最佳答案

Any other suggestions to reduce lag?

是的。不要使用 -drawRect:。这是一个漫长而复杂的原因,但基本上当 UIKit 看到你在你的 UIView 子类中实现了 -drawRect: 时,渲染会经历非常缓慢的基于软件的渲染小路。当您使用 CALayer 对象和复合 View 进行绘制时,您可以获得硬件加速图形,这可以使您的应用程序性能更高。

关于objective-c - 核心图形- drawRect : not getting called frequently enough,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6991619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com