Ответ 1
К сожалению, нет способа сделать некомпозиционную смесь между UIViews на iOS. UIKit не обеспечивает функциональность, и вы уже отметили, что CALayer тоже не может этого сделать.
В общем, реализация -drawRect в UIView вам не поможет. Вы рисуете пустую растровую карту - она не содержит битов за ней, поскольку они могут меняться в любое время (любой вид или слой могут быть анимированы). CA принципиально предполагает, что содержание слоев должно быть независимым друг от друга.
Вы можете попробовать в своем -drawRect:
- создать контекст изображения
- захватить представления под вашим видом, используя
-[CALayer renderInContext:]
для каждого - создать изображение из контекста изображения
- нарисуйте это изображение в своем представлении
- установите режим наложения и нарисуйте поверх этого
Но это будет медленным и хрупким и не будет работать, если вы будете анимировать любое из видов. Я бы не рекомендовал его.
Если вам действительно нужно это сделать, вам придется переключить всю сцену, чтобы рендерить с OpenGL, где у вас больше свободы.