objective-c - 对于IOS应用,MainView.m中添加了initWithCoder后,View并不会在drawRect之前清空其内容,为什么?

标签 objective-c ios uiview

对于单 View 应用程序,我添加了一个 MainView 真的很奇怪上课并制作了ViewController.xib使用 MainView 的自定义类, 并 catch touchesMoved事件在 ViewController.m , 并记录点(位置)。

然后在drawRect里面MainView.m ,我画点。因此,当程序运行时,我所看到的只是屏幕上的一个点,绘制到我手指移动到的位置...

但是,一旦我添加 initWithCoderMainView.m ,行为完全不同。似乎 View 在绘制点之前不会清除其内容,并且之前绘制的所有点都保留在屏幕上,但屏幕闪烁很多(我正在使用带有新 GPU 的新 iPad)......似乎有有几个“缓冲区”,一些有不同的旧点集,另一个缓冲区有不同的旧点集......当我的手指离开屏幕时,它可能是其中一个缓冲区(具有不同点集的随机缓冲区) . (还有一件事:屏幕背景变为全黑。之前,它是灰色或 Interface Builder 将 View 设置为任何颜色)。为什么添加 initWithCoder如下会产生这样的效果?

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {

    }
    return self;
}

最佳答案

您的initWithCoder: 方法有误。您必须调用 [super initWithCoder:aDecoder],而不是普通的旧 [super init],否则 xib 文件中的所有信息(包括重绘选项和背景颜色)已丢失 - aDecoder 对象包含所有这些信息,而您正在丢弃它。

关于objective-c - 对于IOS应用,MainView.m中添加了initWithCoder后,View并不会在drawRect之前清空其内容,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265401/

相关文章:

ios - 快速翻转 View : issues with whole screen flipping + tap gesture only works twice

ios - 修改 contentEdgeInset 后 UINavigationBar 下的 UITableView 滚动指示器

ios - 从 UIWebView 打印 PDF 会产生未缩放的页面

cocoa-touch - 自定义导航栏及其按钮

objective-c - 在 NSArray 中创建 UIVews 网格

iphone - 沿路径 iOS 移动两个形状?

objective-c - uinavigationcontroller 堆栈内存管理

ios - 如何使用搜索项目的 videoID 在 AVPlayer 中播放视频?

ios - iOS 是否会在应用程序启动时将所有系统动态框架加载到内存中?

objective-c - autorelease 与 dealloc 中的 release