真的很奇怪,对于一个单视图应用程序,我添加了一个MainView
类并ViewController.xib
使用自定义类MainView
,并在 中捕获touchesMoved
事件ViewController.m
,并记录点(位置)。
然后在drawRect
里面MainView.m
,我画了点。所以当程序运行时,我看到的只是屏幕上的一个点,绘制到我手指移动到的位置......
但是,一旦我添加initWithCoder
到MainView.m
,行为就完全不同了。似乎视图在绘制点之前不会清除其内容,并且之前绘制的所有点都保留在屏幕上,但屏幕闪烁很多(我正在使用带有新 GPU 的新 iPad)......似乎在那里是几个“缓冲区”,一些具有不同的旧点集,另一个缓冲区具有不同的旧点集......当我的手指离开屏幕时,它可能是其中一个缓冲区(具有不同点集的随机缓冲区) . (还有一件事:屏幕的背景变成了全黑。之前,它是灰色或任何颜色的 Interface Builder 将视图设置为)。为什么添加initWithCoder
如下会产生这样的效果?
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
}
return self;
}