Это известная ошибка в самом BWSplitView, связанная с тем, как анимация представления и таймеры взаимодействуют в этом представлении. Подробности здесь:
http://bwalkin.lighthouseapp.com/projects/36323/tickets/34-split-view-doesnt-resize-subview-properly-during-a-toggle-uncollapse-after-manual-collapse
Как правило, до того, как представление анимируется, autoresizesSubviews не устанавливается, так что представление можно свернуть / развернуть, не затрагивая его содержимое; Затем запланирован таймер для восстановления свойства autoresizesSubviews после завершения анимации. Но (конечно) анимация может иногда заканчиваться немного раньше или позже, чем срабатывает запланированный таймер; поэтому автоматическое изменение размера включено до завершения анимации, что приводит к изменению размера на несколько пикселей. Как вы, вероятно, видели, подпредставления имеют тенденцию немного двигаться, поскольку представление свернуто и не свернуто.
«Полное» исправление для этого состояло бы в том, чтобы восстановить авторазмер, когда CAAnimation завершил использование обратного вызова, но это еще не было реализовано. Однако в этой теме «Роберт Пейн» опубликовал версию BWSplitView.m, в которой используется немного другой подход - размеры видов записываются до свертывания и восстанавливаются после расширения. Я применил этот патч сам (я думаю, что он не будет компилироваться сначала - но это просто вопрос необъявленной переменной?) И могу подтвердить, что это действительно решает проблему.
Дайте мне знать, если вы хотите BWSplitView.m, который успешно компилируется, или копию скомпилированной среды.