Objective c NSM矩阵绘制外部边界

Objective c NSM矩阵绘制外部边界,objective-c,cocoa-touch,cocoa,Objective C,Cocoa Touch,Cocoa,我有一个相当简单的自定义视图类,它包含在NSSplitView中。该视图类通过添加一个NSMatrix和两个虚拟单元来初始化自身。真正奇怪的是,尽管它的大小足以填满superview,但实际上它比superview要高得多、宽得多。我试图记录帧和边界,结果也在下面,但我被难住了。为什么这个尺寸不符合我的预期 您既没有设置自动布局约束,也没有设置老式的springs-n-struts,以使矩阵保持其父视图的边缘 我怀疑您正在运行状态恢复,因此在启动时,将以一个大小创建父视图,然后状态恢复,窗

我有一个相当简单的自定义视图类,它包含在NSSplitView中。该视图类通过添加一个NSMatrix和两个虚拟单元来初始化自身。真正奇怪的是,尽管它的大小足以填满superview,但实际上它比superview要高得多、宽得多。我试图记录帧和边界,结果也在下面,但我被难住了。为什么这个尺寸不符合我的预期



您既没有设置自动布局约束,也没有设置老式的springs-n-struts,以使矩阵保持其父视图的边缘

我怀疑您正在运行状态恢复,因此在启动时,将以一个大小创建父视图,然后状态恢复,窗口/拆分视图调整大小,子视图不再与其父视图匹配


一般来说,如果您自己创建一个视图,请立即添加约束(或者调用
-setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable
[在本例中]如果您不使用autolayout)。

您完全正确。。我把它拉出来是为了追逐其他问题,但忘了重新插入。。非常感谢。
- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSImageCell *prototypeCell = [[NSImageCell alloc] init];
        [prototypeCell setBordered:YES];

        _matrix = [[NSMatrix alloc] initWithFrame:self.bounds
                                             mode:NSHighlightModeMatrix
                                        prototype:prototypeCell
                                     numberOfRows:1
                                  numberOfColumns:1];

        [_matrix setCellSize:NSMakeSize(50, 50)];

        [_matrix setBackgroundColor:[NSColor redColor]];
        _matrix.drawsBackground = YES;

        [_matrix addRow];

        NSCell *cell = [_matrix cellAtRow:0 column:0];
        [cell setImage:[NSImage imageNamed:@"block.png"]];

        cell = [_matrix cellAtRow:1 column:0];
        [cell setImage:[NSImage imageNamed:@"block.png"]];

        [self addSubview:_matrix];

        NSLog(@"%@", NSStringFromRect(self.bounds));
        NSLog(@"%@", NSStringFromRect(self.frame));
        NSLog(@"%@", NSStringFromRect(_matrix.bounds));
        NSLog(@"%@", NSStringFromRect(_matrix.frame));
    }
    return self;
}
Output:
2014-02-15 15:16:23.458 Temp[5970:303] {{0, 0}, {45, 331}}
2014-02-15 15:16:23.459 Temp[5970:303] {{500, 0}, {45, 331}}
2014-02-15 15:16:23.459 Temp[5970:303] {{0, 0}, {45, 331}}
2014-02-15 15:16:23.459 Temp[5970:303] {{0, 0}, {45, 331}}