У меня есть NSView с размещением на уровне (-isFlipped = YES) с тремя подвидами размещения на уровне. Подпредставления — это заголовок, область содержимого и нижний колонтитул. В заголовке есть треугольник раскрытия, который свернет представление содержимого и просто покажет верхний и нижний колонтитулы, склеенные вместе.
Я могу сделать это довольно легко с помощью Core Animation, но возникает странная проблема, когда я изменяю размер представления. Если я изменяю размер представления по горизонтали, я хочу, чтобы все три подпредставления соответствовали новой ширине. Если я изменяю его размер по вертикали, я хочу, чтобы подпредставления оставались там, где они есть (т.е. нижний край представления должен иметь возможность перемещаться, не влияя на положение подпредставления (конечно, за исключением отсечения). Причина этого в том, что мне нужно свернуть размер представления, когда contentView исчезает.
На самом деле происходит то, что все три подвида поднимаются над верхней частью вида при изменении высоты... а затем возвращаются на место при изменении горизонтали. Это как-то связано с комбинацией представления и подпредставлений, потому что, если подпредставления размещаются непосредственно в окне, они ведут себя правильно. Кроме того, я попытался добавить кнопку в представление, и она вела себя нормально.
Я смог заставить кнопку работать таким же образом, сделав ее многоуровневой... так что я думаю, что поддержка слоя имеет к этому какое-то отношение.
Это похоже на то, что резервные слои прилипают к родительскому виду, когда он изменяет размер и выталкивается вверх, даже если координаты перевернуты.
Любые идеи?