我想在 Cocoa 中创建任意画布;也就是说,一个可以绘制整个可见区域的绘图区域,并且程序员选择了滚动限制,并且对我是否可以在整个可见区域上绘制没有影响。这类似于我在 Windows 和 GTK+ 上执行此操作的方式,与标准 NSScrollView 的不同之处在于 a) 我仅在可见区域中绘制(因此 (0, 0) 是可见区域的原点,而不是整个文档)和b)我不限于文档视图框架(因此,如果文档视图小于可见区域,我仍然可以在可见区域中绘制所有内容)。
为此,我正在实现 NSClipView 的一个子类来进行绘图,并仅使用 NSScrollView 的文档视图来设置滚动范围。
当我drawRect:
在 NSClipView 中覆盖时,剪辑视图的背景变为黑色。方法可以是空的,可以是 defer to super
,也可以是绘制任何东西;结果是一样的。只有通过省略drawRect:
才能绘制正确的白色背景颜色。
现在,正如这里所暗示的(即使它是关于 iOS 我假设模型足够相似,以至于该解决方案也可以在 OS X 上运行),如果我覆盖isOpaque
返回NO
,则背景绘制正确。为什么?NSClipView 有什么不同之处在于它可以YES
在仍然绘制背景的同时返回?
还是我实现此滚动视图的方法错误?
谢谢。