Могу ли я изменить NSScreen видимый кадр? - PullRequest
4 голосов
/ 25 августа 2011

Я пытаюсь создать панель инструментов, которая закрепляется в верхней части экрана под строкой меню OS X.

Я бы не хотел, чтобы другие приложения могли перекрывать мое приложение, когда они развернуты.Я могу получить видимые размеры кадра, используя метод visibleframe NSScreen, но могу ли я настроить visibleframe, чтобы опустить размер и положение моего приложения?

Ответы [ 2 ]

4 голосов
/ 26 августа 2011

Простой ответ: нет, вы не можете. Я думаю, что единственный способ изменить visibleRect на экране - это ввести код в AppKit и быстро изменить метод.

Даже тогда он может не выполнять то, что вам нужно, потому что этот метод может не соответствовать тому, что Apple использует для определения «безопасной области» для окон, и почти наверняка не будет работать с приложениями Carbon.

Ничто из того, что вы делаете с уровнями окна, не изменит этого.

То, что вы могли бы сделать, это использовать инфраструктуру специальных возможностей для изменения положения окон, если вы обнаружите, что их кадры изменились так, что они перекрывают ваше окно панели инструментов. К сожалению, я думаю, что вам может понадобиться использовать опрос для этого.

1 голос
/ 26 августа 2011

Попробуйте установить уровень окна в NSDockWindowLevel.

Это может не сработать, в зависимости от того, вычитает ли система все окна на этом уровне или только окно Dock, но стоит попробовать.

...