4
У меня есть NSSplitView с набором делителей, как тонкий, и он отлично выглядит. Боковая панель Demo - replaceSubview
Однако, если заменить одну из подвидов этой строки кода
[self.horizontalSplitView replaceSubview:[[self.horizontalSplitView subviews] objectAtIndex:0] with:myGreatView];
Разделитель выглядит своего рода плохо, как я могу решить эту проблему?
Установите точку останова отладки в XCode или зарегистрируйте прямоугольные прямоугольники в представлении левого столбца до и после изменения - обратите внимание, идентичны ли кадры до и после обмена. Является ли замещающий вид того же класса, который он заменяет? – isaac
Рамка отличается, но даже если я устанавливаю кадр перед заменой subview 'NSRect prevFrame = [[self.horizontalSplitView.subviews objectAtIndex: 0] frame]; self.sideBarViewController.view.frame = prevFrame; 'это не помогает. Ну, это не тот же класс как таковой, это подкласс NSView. – pawelropa
Одна вещь, которую нужно проверить, это атрибуты autoLayout. Если кадры разные, ясно, что это вопрос макета - и если вы знаете, что правильно устанавливаете фреймы, то ясно, что кто-то другой думает иначе (где-то вне сферы действия). Если исходный вид и вид, которые вы заменяете, имеют, например, различные автоматические маски автозапуска, вы можете увидеть такое поведение, поскольку супервизор пытается развернуть представления в соответствии с их соответствующими характеристиками привязки и изменения размера. – isaac