Базовая система координат для CoreGraphics отличается от базовой системы координат для UIKit. И на самом деле, это разные на разных устройствах. Похоже, вам нужно выяснить, какая базовая система координат находится на вашем конкретном устройстве, а затем применить преобразование CTM к вашему контексту, прежде чем пытаться визуализировать слой окна. Это позволит вам преобразовать базовую систему координат из CoreGraphics в ту же, что вы ожидали.
Чтобы уточнить, когда вы создаете новый контекст, система координат полностью документируется. Однако система координат, используемая слоем окна, будет соответствовать базовой системе координат CoreGraphics для экрана (которая отличается на разных устройствах). Это необходимо перевести обратно, чтобы соответствовать системе координат для вашего контекста, и вы можете сделать это, выяснив правильное аффинное преобразование и применив его к своему контексту с помощью CGContextConcatCTM()
и связанных функций.