objective-c - 如何在 Cocoa 中绘制正方形网格?

标签 objective-c cocoa

我正在制作视觉效果 Conway's Game of Life cocoa 计划。当然,主视图基本上是一个方形图 block 网格,随着算法的进展,它的颜色会在黑白之间变化,但我很难找出绘制和管理这个方形网格的最佳方法。

我最初的想法是让每个图 block 都是 NSView 的子类。绘图非常简单:如果它还活着,则将其填充为黑色,如果它已死,则将其填充为白色。但我不知道如何将它放在窗口中;在 Interface Builder 中将其布局为单独的 NSView(并为每个 NSView 设置 IB 导出)似乎很乏味。我可以通过编程方式定位它们,但这似乎也很乏味(特别是因为我希望每个图 block 之间有一点空间)。

我记得 NSMatrix 是专门设计用于处理界面对象数组(或网格)的,所以我想我可以创建 NSView 子类的 NSMatrix。问题是,似乎你只能创建 NSControls 的 NSMatrix 。我的自定义图 block View 本身并不是真正的控件,因为它不需要接受鼠标跟踪事件等,但我想我可以伪造它并仅将其用于绘图(并且只需忽略任何事件)。

当然,如果你使用一大堆相同类型的 NSControl,最好使用 NSCell 来进行绘图,但 NSCell 似乎更适合绘制基于文本或图像的控件;我没有看到一种简单的方法来绘制黑色或白色的矩形。

我倾向于滥用 NSControl 子类来进行绘图,并跳过将 NSCell 与之关联,但我想知道是否有更好的方法或我还没有想到的东西。

最佳答案

一种方法是在 View 中托管一个 CALayer,并为每个单元格创建一个 CALayer(每个单元格层都是 View 层的子层)。然后只需设置图层的背景颜色即可。

关于objective-c - 如何在 Cocoa 中绘制正方形网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319045/

相关文章:

iphone - "Multiple methods named...."问题

objective-c - 快速的新手。如何创建或更新 View

macos - 将 RTF 文件与 Cocoa 合并

objective-c - Extern 的神秘问题

Objective-C (iOS/ cocoa ) : expand first letter into day of week

objective-c - NSCollectionView 单元格顺序随 View 更改而更改

iphone - 漂亮的 UIButton

ios - viewWithTag 不起作用

objective-c - NSImage colorWithPatternImage : how to tile images from the top instead?

cocoa - 什么是 CGSUpdateManager 以及为什么它会提示?