问题标签 [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.

0 投票
2 回答
980 浏览

ios - 强制设置NeedsDisplay

我有一个使用 CoreGraphics 和 drawRect 绘制齿轮的例程。我使用了一个按钮来推进这些阶段的齿轮:

-(IBAction)advanceButtonPressed:(id)sender{

}

绘制齿轮的例程在drawRect中,根据stage的vale将轮齿绘制到新的位置,传给drawRect。在四个步骤中,每个按钮按下一个,齿轮转到新位置(围绕圆圈的一个部分。)

我更改了 buttonPressed 例程,让它循环执行四个阶段,所以我只需要按一次按钮,但它不起作用:

-(IBAction)buttonPressed:(id)sender{

}

我的 NSLog 显示该阶段经历了它的四个值,就像在前面的例程中一样。但是 setNeedsDisplay 只执行一次(正如 drawRect 中的 NSLog 跟踪所证实的那样),因此齿轮显示在其最终位置,而不是中间阶段。看起来 setNeedsDisplay 仅在按钮例程完成时才执行,尽管它位于循环内。

有没有办法强制它执行?

0 投票
1 回答
145 浏览

ios - IOS。NSURLConnection 和 UIView 的 setNeedsDisplay 是否依赖 GCD 进行异步行为?

我最近做了很多 GCD 和异步渲染和数据检索工作,我真的需要确定关于异步是如何完成的心智模型。

我想专注于setNeedsDisplay方法NSURLConnectionDelegate套件。

  1. 异步调用 setNeedsDisplay 是否正确?我经常调用它,dispatch_async(dispatch_get_main_queue(), ^{})这让我感到困惑。
  2. 回调被描述为异步的NSURLConnectionDelegate,但它们实际上并没有在主线程/运行循环上同时运行。我对这里的区别很模糊。

更一般地说,在 GCD 的现代 iOS 时代,制作 GCD 的最佳实践是什么,这些方法可以很好地结合在一起。我只是在这里寻找一般指导方针,因为我经常使用它们并且只是尽量不让自己陷入困境。

干杯,
道格

0 投票
1 回答
33258 浏览

ios - setNeedsLayout 和 setNeedsDisplay

UIView方法setNeedsLayout和之间的真正区别是什么setNeedsDisplay

像往常一样,文档对此很模糊。

0 投票
1 回答
405 浏览

objective-c - 异步获取图像并设置 setNeedsDisplay

此代码位于设置自定义单元格元素的单元格初始化例程中。它从网络异步获取图像。但是一旦完成,我需要它重新绘制。

这是我的代码片段:

但它不会重绘 UIImageView。我也尝试重新绘制整个单元格,但这也不起作用。非常感谢您的帮助。我一直在努力解决这个问题一段时间!

0 投票
1 回答
501 浏览

objective-c - 表格视图中的 SetNeedsDisplay

我的问题是,并非所有单元格都使用正确的 UIView 正确初始化为渲染图像。(请参见下面的代码)在 iphone 4 上,具有视网膜显示的 iphone 上的相同 cel 也是另一个单元格。在此设置中 setNeedsDisplay 将不起作用。如果我在 IBoutlet 中使用相同的结构,它就可以工作。!我需要在某些单元格中使用图像文件 .png 并在其他一些单元格中使用定义的绘图方法,它使用 drawrect 或更好我应该使用 setNeedsDisplay 方法.....

怎么回事!!!

我的代码

表格视图...单元格

0 投票
2 回答
1733 浏览

ios - 使用 drawRect 设置 UIView 背景颜色:

我正在尝试设置自定义 UIView 类的背景颜色。该类还在drawRect:方法中进行石英绘图。

由于在视图的下一次重绘之前不会发生背景颜色更改,因此我backgroundColor在调用之前更改了 UIView 的属性setNeedsDisplay。在视图重绘时,我设置了UIActivityIndicatorView动画。

指示器在 结束时停止setNeedsDisplaytheColor每次我需要调用它时都会改变。

假设我有一个耗时的setNeedsDisplay过程。我想设置背景并保留指示器动画。目前,更改backgroundColor调用setNeedsDisplay但在方法运行之前甚至不会更改背景performSelectorInBackground颜色!因此,我的应用程序挂起,并且没有任何指标动画。我该如何处理这个排序问题?谢谢。

编辑:我的意思是我的drawrect:可能很耗时。

0 投票
2 回答
3017 浏览

ios - 触发drawRect重绘视图的按钮

我有一个带有子视图的 VC。在subview level我有一个按钮。我希望按钮导致视图被更新。

IBAction代码在VC中。它目前所做的只是切换一个BOOL值。

回到子视图 drawRect: 方法是测试BOOL并相应更改视图的代码。

我的观察是,当按下按钮时,IBAction 代码运行,切换BOOL,但该drawRect:方法没有被调用。

我尝试手动调用 drawRect (不好的做法,没有工作)。我尝试调用 setNeedsDisplay 但这也不起作用(无法弄清楚如何引用以编程方式创建的子视图)。

欢迎提出建议。

IBAction 代码很简单,但包含在下面:

0 投票
0 回答
309 浏览

objective-c - 使用 drawRect 和 setNeedsDisplayInRect 绘制最小

他,我刚刚意识到 [self setNeedsDisplayInRect:(dRect)] 绘制所有内容(不仅是必要的),然后在“dRect”中更新屏幕。所以我开始像这样编辑drawRect方法:

然后让需要显示的方法改变“gUs”。这很好用,因为我有很多控件,所以极大地减少了 cpu 工作。

但后来我看到,在重负载或经常显示更新的情况下,有时另一种方法会在处理上一次调用的 needDisplay 之前更改“gUs”,从而导致错误的绘图。

我怎样才能避免这种情况?

0 投票
2 回答
743 浏览

ios - UIView setNeedsDisplay 不起作用

简单的代码在这里:

自定义 MyButton.h

自定义 MyButton.m

自定义 MyView.h:

自定义 MyView.m:

视图控制器.m:

当我按下按钮时,图像视图不会改变。我怎样才能解决这个问题?非常感谢!

0 投票
2 回答
1323 浏览

iphone - setNeedsDisplay 只被调用一次

在我的代码中,我想“动画”绘制一条线的延迟,因此在向视图添加新线后,我调用 setNeedsDisplay - 一次可以正常工作。

在 drawRect 方法中,我绘制了线条并调用线条的方法来增加线条长度l。现在我想再次调用 setNeedsDisplay 来重绘线条 - 所以它是一个“成长”的动画..

但它只调用一次 setNeedsDisplay 并且再也不会调用,除非我添加了另一行。我还尝试在这个类中调用一个方法,该方法调用 setNeedsDisplay,以确保您不能在 drawRect 内部调用它。

_lines是具有 GameLine 对象(非原子,保留)属性的 NSMutableArray。