У меня есть довольно простой пользовательский класс представления, который содержится внутри NSSplitView. Этот класс представления сам по себе добавляет NSMatrix и пару фиктивных ячеек. Действительно странно то, что, несмотря на то, что размер заполнен, он на самом деле значительно выше и шире, чем супервизор. Я попытался зарегистрировать фрейм и рамки, результаты ниже, но я в тупике. Почему этот размер не зависит от его надзора, как я ожидал?NSMatrix чертеж за пределами границ
- (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}}
Вы абсолютно правы .. Я вытащил это, пытаясь преследовать другие проблемы, и забыл повторно вставить .. Спасибо! – XeroxDucati