У вас есть два варианта:
Сначала отключите «Копировать при прокрутке».Вы можете сделать это непосредственно в IB или установив опцию copiesOnScroll
для contentView
члена NSScrollView
.Эта опция, которая включена по умолчанию, делает так, чтобы представление прокрутки «копировало существующее визуализированное изображение во время прокрутки (рисование только открытых частей его вида документа)».Если он выключен, «он заставляет каждый раз перерисовывать содержимое».Таким образом, если производительность не является большой проблемой, она работает только для того, чтобы отключить это.
Однако, если сделать так, чтобы контент перерисовывался каждый раз, это может вызвать серьезные проблемы с производительностью, если вы выполняете сложное рисование в пределах прокрутки.view.
Второй вариант - оставить «Копировать на свитке» включенным, а затем создать окно без полей, содержащее наложенный вид.Это на самом деле не так хакерски, как может показаться, поскольку вы можете добавить экземпляр NSWindow
в качестве дочернего элемента текущего окна, чтобы он автоматически перемещался вместе с главным окном при его перемещении.
The *Пример 1013 * RoundTransparentWindow даст вам отличный пример для создания окна, которое будет содержать ваше наложение.Затем просто используйте NSWindow addChildWindow
, чтобы прикрепить его к главному окну.
Обратите внимание, что при таком подходе вам нужно будет обрабатывать время представления и скрытия окна наложения.Также кажется, что при максимизации родительского окна положение дочернего окна автоматически не корректируется.Таким образом, вам придется справиться с этим тоже.Но это отличное решение, если вы не хотите жертвовать значительным улучшением производительности при использовании «Копировать на свитке».