Ответ 1
Я бы не рекомендовал рисовать за пределами границ обзора. Либо ваше представление должно автоматически изменяться, чтобы включать ваш рисунок, либо вам нужно иметь прозрачные перекрывающиеся виды. Или оба. Я не могу придумать ситуацию, в которой ни один из этих случаев не будет охватывать, но мне может не хватить воображения. =)
Вероятно, что происходит в настоящее время, так это то, что когда супер-просмотр перерисовывается, он сообщает супер-представлению, что ему нужно перерисовать, что приведет к стиранию рисунка, который вы делаете снаружи. Это было какое-то время, любой более осведомленный может (должен!) Исправить меня здесь, если я ошибаюсь.
Я не знаю, работает ли в симуляторе "Quartz Debug" (из стандартных инструментов разработчика Apple, /Developer/Applications/Performance Tools/Quartz Debug
), но стоит попробовать. В нем есть режим, который покажет вам, когда и как часто происходит перерисовка, с краской и дополнительной задержкой при обновлении.
Вы можете делать то, что вы просите, но вам нужно принудительно перерисовывать свои под-представления каждый раз, когда вы выходите за пределы подзадачи, что означает, что вашему супер-представлению необходимо вручную нарисовать его дочерние элементы внутри него. По сути, вы выбрали бы парадигму рисования яблока и просто заставили бы ваши суб-представления действовать как расширение чертежа вашего основного вида в любом случае.
Кроме того, если ваши диапазоны настолько динамичны, вы можете рассмотреть возможность рисования в процентах экрана или супер-просмотра, а не в точках, это может иметь смысл для кода.