Изменение размера проблемы с Layer-Hosting NSView - PullRequest
1 голос
/ 28 сентября 2010

У меня есть NSView для размещения слоя (-isFlipped = YES) с тремя подпредставлениями для размещения слоя.Подвиды - это заголовок, область содержимого и нижний колонтитул.Заголовок имеет раскрывающий треугольник, который свернет представление содержимого и просто покажет верхний и нижний колонтитулы, соединенные вместе.

Я могу довольно легко добиться этого с помощью Core Animation, но при изменении размера представления возникает странная проблема,Если я изменю размер представления по горизонтали, я хочу, чтобы все три подпредставления соответствовали новой ширине.Если я изменю размер по вертикали, я хочу, чтобы подпредставления оставались там, где они есть (т.е. нижний край представления должен иметь возможность перемещаться, не влияя на положение подпредставления (кроме, конечно, отсечения). Причина этого в том, что мне нужно свернутьразмер представления, когда contentView исчезает.

На самом деле происходит то, что все три подпредставления перемещаются выше вершины представления при изменении высоты ... и затем снова включаютсяместо, когда горизонталь изменена. Это как-то связано с сочетанием вида и подпредставлений, потому что, если подпредставления размещаются непосредственно в окне, они ведут себя правильно. Кроме того, я попытался добавить кнопку в представление ивела себя нормально.

Я смог заставить кнопку вести себя так же, сделав ее также и на слоях ... так что я думаю, что поддержка слоев имеет к этому какое-то отношение.

Это похоже на то, что фоновые слои застряли в родительском представлении, поскольку оно изменяет размеры и выталкиваетсядаже если координаты перевернуты.

Есть идеи?

1 Ответ

4 голосов
/ 26 мая 2011

Слои хостинга не должны иметь подпредставлений.Смотрите - (void) setWantsLayer: документация в справочнике по классу NSView:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/setWantsLayer:

Корневое представление может быть представлением с поддержкой слоя, а не слоем, на котором оно размещено?

...