2012-06-30 9 views
4

У меня есть NSSplitView с набором делителей, как тонкий, и он отлично выглядит. enter image description hereБоковая панель Demo - replaceSubview

Однако, если заменить одну из подвидов этой строки кода

[self.horizontalSplitView replaceSubview:[[self.horizontalSplitView subviews] objectAtIndex:0] with:myGreatView]; 

Разделитель выглядит своего рода плохо, как я могу решить эту проблему?

enter image description here

+0

Установите точку останова отладки в XCode или зарегистрируйте прямоугольные прямоугольники в представлении левого столбца до и после изменения - обратите внимание, идентичны ли кадры до и после обмена. Является ли замещающий вид того же класса, который он заменяет? – isaac

+0

Рамка отличается, но даже если я устанавливаю кадр перед заменой subview 'NSRect prevFrame = [[self.horizontalSplitView.subviews objectAtIndex: 0] frame]; self.sideBarViewController.view.frame = prevFrame; 'это не помогает. Ну, это не тот же класс как таковой, это подкласс NSView. – pawelropa

+0

Одна вещь, которую нужно проверить, это атрибуты autoLayout. Если кадры разные, ясно, что это вопрос макета - и если вы знаете, что правильно устанавливаете фреймы, то ясно, что кто-то другой думает иначе (где-то вне сферы действия). Если исходный вид и вид, которые вы заменяете, имеют, например, различные автоматические маски автозапуска, вы можете увидеть такое поведение, поскольку супервизор пытается развернуть представления в соответствии с их соответствующими характеристиками привязки и изменения размера. – isaac

ответ

4

Проблема заключается в том, что ваша точка зрения (myGreatView) имеет границу. Установите для параметра границы значение NSNoBorder.

[myGreatView setBorderType:NSNoBorder];