setFrame создал NSView, который на 15 пикселей меньше в обоих измерениях, чем ожидалось - PullRequest
1 голос
/ 09 мая 2009

У меня загадочная проблема. У меня есть указатель на ванильный NSView, который был инициализирован в перо. Я отправил сообщение NSView с:

[myNSView setFrame:NSMakeRect(0,0,816,1056)];

но когда я перехожу через отладчик, myNSView имеет кадр {{0,0}, {801, 1041}}. Размеры прямоугольника на 15 меньше, чем я указал! Это происходит последовательно. Если я укажу два [setFrames] подряд, все будет работать, но, конечно, это не ответ.

Почему setFrame терпит неудачу?

1 Ответ

4 голосов
/ 09 мая 2009

15px - это размер NSScroller в NSRegularControlSize.

Полагаю, у вас NSScrollView настроен на автоматическое скрытие скроллеров.

Попробуйте отключить горизонтальные и вертикальные скроллеры вашего scrollView в NIB, если это решит проблему, вы будете знать, где оттуда смотреть. Это что-то связанное с clipView scrollView, автоматически изменяющим размер documentView. Размер самого clipView автоматически изменяется при появлении скроллеров; непосредственно после того, как вы установили для documentView значение frameSize (я полагаю, это 100%), для которого нужны скроллеры.

...