Лучшее, что я могу придумать, - вот это (несколько неуклюже, и не продолжает показывать движущийся контент, но должно работать):
- Нарисуйте содержимое каждого окна в изображениях
- Создайте новые окна, показывающие эти изображения (установите масштаб с изменением размера окна), и скройте свои старые
- Рассчитать новые позиции для каждого окна (в первом приближении можно было бы масштабировать их до одинакового размера, а затем разбить их на плитки)
- Call -setFrame: animate: на всех них
С другой стороны, тот же трюк, но вместо использования реальных окон, сделайте одно прозрачное окно размером с экран и переместите в нем CALayers.
Удачи! Это определенно сложно сделать хорошо.