作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的方法是在非主线程上调用的,具体来说,是在录音音频队列回调中
- (void)myMethod
{
//...
dispatch_async(dispatch_get_main_queue(), ^{
[myGraphView setNeedsDisplayInRect:CGRectMake(a, b, c, d)];
NSLog(@"Block called");
});
//...
}
其中 myGraphView 是自定义 UIView 对象。据我所知,应该在主线程上调用 setNeedsDisplayInRect:
,这就是为什么我有 dispatch_async...
。现在的问题是我为 myGraph 实现的方法 - (void)drawRect:(CGRect)rect
从未被调用,即使 block 中的 NSLog
已被调用多次。
最佳答案
这里有几种可能性。
来自类引用:
Note: If your view is backed by a CAEAGLLayer object, this method has no effect. It is intended for use only with views that use native drawing technologies (such as UIKit and Core Graphics) to render their content.
另一个选项(可能是本例中的原因)与实际几何形状有关。如果提供的矩形无效或不在屏幕上,则调用不执行任何操作。我建议您验证矩形的计算是否正确。
关于ios - setNeedsDisplay 已在主队列上提交但未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613863/
我是一名优秀的程序员,十分优秀!