我正在尝试以编程方式创建NSImageCell原型的NSMatrix (如果您可以通过接口构建器来帮助我,请在answering here上做客)
我创建了一个新的空项目。在它里面,一个普通的对象(子类化的NSObject)有这样的代码(并且只有这样的代码):
- (void) awakeFromNib {
NSRect f = view.bounds;
NSMatrix* matrix = [[NSMatrix alloc] initWithFrame:f mode:NSListModeMatrix cellClass:[NSImageCell class] numberOfRows:1 numberOfColumns:1];
[matrix setCellSize:NSMakeSize(100, 100)];
[matrix sizeToCells];
[matrix setNeedsDisplay:YES];
[view addSubview:[matrix autorelease]];
[view setNeedsDisplay:YES];
NSLog(@"Matrix frame: %@", NSStringFromRect(matrix.frame));
}“NSView”是一个指定为插座的视图,连接到界面生成器中窗口的内容视图。
矩阵根本不显示。它会打印日志,指出帧大小为(0,0,100,100),正如预期的那样。
我做错了什么?
正如标题所述,我使用Xcode3.2.1在Snow Leopard机器上执行此操作。
发布于 2009-11-21 18:26:53
默认情况下,NSMatrix不会绘制任何内容,因为它是其中NSCells的容器。您可以通过将NSMatrix设置为绘制其背景来验证是否已将其正确添加到视图中。
[matrix setBackgroundColor:[NSColor blueColor]];
[matrix setDrawsBackground:YES];因为NSMatrix是NSCell的容器,所以您需要用一些东西填充它们。在您发布的示例中,您可以通过获取与您唯一的行和列相对应的单元格并设置图像来完成此操作。
NSImageCell *cell = (NSImageCell *)[matrix cellAtRow:0 column:0];
[cell setImage:[NSImage imageNamed:@"image.jpg"]];此外,请记住,您的矩阵只能显示一个单元格,当您向其添加列和行时,您需要增加它的大小。
https://stackoverflow.com/questions/1772131
复制相似问题