首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式创建NSMatrix,雪豹

以编程方式创建NSMatrix,雪豹
EN

Stack Overflow用户
提问于 2009-11-21 01:41:02
回答 1查看 3.8K关注 0票数 2

我正在尝试以编程方式创建NSImageCell原型的NSMatrix (如果您可以通过接口构建器来帮助我,请在answering here上做客)

我创建了一个新的空项目。在它里面,一个普通的对象(子类化的NSObject)有这样的代码(并且只有这样的代码):

代码语言:javascript
复制
- (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机器上执行此操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-21 18:26:53

默认情况下,NSMatrix不会绘制任何内容,因为它是其中NSCells的容器。您可以通过将NSMatrix设置为绘制其背景来验证是否已将其正确添加到视图中。

代码语言:javascript
复制
[matrix setBackgroundColor:[NSColor blueColor]];
[matrix setDrawsBackground:YES];

因为NSMatrixNSCell的容器,所以您需要用一些东西填充它们。在您发布的示例中,您可以通过获取与您唯一的行和列相对应的单元格并设置图像来完成此操作。

代码语言:javascript
复制
NSImageCell *cell = (NSImageCell *)[matrix cellAtRow:0 column:0];
[cell setImage:[NSImage imageNamed:@"image.jpg"]];

此外,请记住,您的矩阵只能显示一个单元格,当您向其添加列和行时,您需要增加它的大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1772131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档