问题标签 [setneedsdisplay]
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.
iphone - UIView setNeedsDisplay 不在主线程上?
在我的 iPhone 应用程序中,我有一个辅助线程,用于在后台执行任务,每隔几毫秒,必须更新视图(而不是从主线程)。我在 UIView 子类中尝试了以下代码:
这在模拟器上效果很好,但是在我的设备上,它非常滞后。我唯一能想到的是主线程被 UIKit 的常规例程所困,这意味着我的 setNeedsDisplay 在它应该调用的时候被调用了很长时间(大约 1/2 秒后)。我认为这是因为在其他代码中,基于用户交互,我立即调用 setNeedsDisplay,它运行良好,完全没有任何延迟。辅助线程上的后端计算少于用户界面线程上的后端计算。这会在我的应用程序中导致一些非常糟糕的视觉效果。
所以,总结一下,我该如何解决这个问题?
更新:
我还有另一种方法可以告诉视图它需要每秒刷新 x 次吗?如果可能的话,这最终可能对我来说是更好的表现。我试过 CADisplayLink 没有成功...
uiscrollview - drawRect 使 UIScrollView 中的滚动变慢
我有一个 UIScrollView,里面有一个(自定义)UIView。
在我调用的 scrollViewDidScroll 方法中
如果我在自定义 UIView 中实现 drawRect: 方法,这会使滚动明显变慢——即使它完全是空的。
一旦我删除了 drawRect: 方法,它就又恢复了。
我完全不知道,为什么……你们中的任何人?
iphone - UIView 实时强制重绘(绘图应用)
我正在开发一个绘图应用程序。我将笔画收集为点并将这些点绘制到我的 UIView 子类的 drawRect 方法中。
我通过覆盖touchesBegan
和touchesMoved
来收集要点touchesEnded
。在所有这些我调用的方法[self setNeedsDisplay]
中,我希望实时看到笔画......它不会发生,实际上 drawRect 方法仅在之后调用touchesEnded
我需要一种方法来不简单地将视图标记为已丢弃,但我需要强制系统执行 drawRect 调用。
任何的想法 ?
objective-c - setNeedsDisplay 发布子视图?
如果自定义视图根据条件向自身添加了多个子视图if
,然后setNeedsDisplay
在该条件不再存在的情况下在此视图上调用a true
,因此不会创建这些子视图,“旧”子视图是否会自动从内存中释放drawRect
?
或者,我应该担心检查子视图的存在,然后释放它们setNeedsDisplay
吗?
我想最终我的问题是关于 的内存含义setNeedsDisplay
,如果它有效地从内存中删除旧视图及其子视图,然后基本上从头开始重新创建视图?
iphone - iPhone SDK UIView drawRect 和方向改变
我已经编写了这段代码... plotView 是通过 drawRect 方法以编程方式绘制的...问题是当我更改设备方向时...所有视图都没有正确缩放... autoresizing mask 有什么问题?我应该玩 setNeedsDisplay 还是类似的?
提前致谢!
}
iphone - iphone - SetNeedsDisplay 不工作
我正在尝试在此代码中刷新我的主视图。它显示了正确的子视图,但它保留了已经显示的其他视图。我已经尝试过 setNeedsDisplay 和 setNeedsLayout 但没有成功。
有任何想法吗?
代码:
问候!
graphics - 在 OS X 下需要时不调用 drawRect
我正在使用一个使用 NSView 子类的窗口。其中一部分是在程序启动时绘制的,另一部分需要在用户单击另一个窗口中的按钮时绘制。另一个窗口的代码毫无问题地调用我的 NSView 子类,创建新图形,然后返回。但是,需要用新图形更新的窗口不会改变。
当我将开始图形和稍后要绘制的图形都放在初始 drawRect 调用中时,一切都没有问题地绘制。但是,当用户单击第二个窗口上的按钮时,不会调用 drawRect。我已经尝试过 awakeFromNib、setNeedsDisplay、needsDisplay 和 display,但到目前为止我没有发现任何东西可以让 NSView 窗口调用 drawRect。
我对 OS X 编程相当陌生,并且很感激您可以提出的任何提示。
谢谢,汤姆杰弗里斯
ios - iOS:如何在弹出其子 UIViewController 后“刷新” UIViewController?
在我的应用程序中,我使用的是 UINavigationController。我有一个“父” UIViewController 和一个“子” UIViewController 在堆栈上运行。用户可以对孩子进行一些稍后假设会影响父母的设置。我使用 NSUserDefaults 来保存和检索数据,根据 NSLog 似乎工作正常。
我不清楚的是,一旦我从孩子那里回来,我应该如何“刷新”数据。
让我更具体一点:在孩子中有一个“返回”按钮,它执行 popViewControllerAnimated,然后我们回到父级。我想重新运行 viewDidLoad 中的所有方法,以便使用从 NSUserDefaults 数据中获得的更改设置父视图字段。
- 我应该在父方法中的哪个位置告诉视图“刷新”?
- 如何执行此刷新操作?我应该再次调用 viewDidLoad 吗?我读到了一个叫做 setNeedsDisplay 的东西,如果那是我应该使用的东西,语法是什么(是“[self.view setNeedsDisplay]”还是其他东西)?
任何人都可以指导和详细说明吗?
uiview - CATiledLayer 重绘底层子视图
我有两个子类 UIView 作为 UIViewController 视图的子视图。第一个 UIView 将 CATiledLayer 作为图层类。并将其置于背景上。第二个 UIView 首先放在上面。我想用 CATiledLayer 重绘 UIView。我尝试调用 [myView.layer setNeedsDisplay] 但它不起作用。
ios - setNeedsDisplay 是立即生效还是只是排队等候?
这里有人知道是否setNeedsDisplay
会导致立即drawRect
呼叫和立即更新屏幕吗?或者它仅仅是一个排队的请求?谢谢。