Вы правы в том, что телефон хранит метаданные поворота с изображением, чтобы указать, в каком направлении его следует повернуть для отображения. Это может быть тег EXIF; это может быть что-то совершенно другое, все, что Apple говорит вам, в форме UIImage.
UIImage во многих отношениях является простой оболочкой для CGImage. Изображение CGImage в этом случае является «тупым» объектом, который знает / заботится только о необработанных данных изображения; нет ничего более высокого уровня, чем информация о вращении. UIImage объединяет это с вращением и другой информацией в одном удобном классе. Одним из преимуществ является то, что UIImage автоматически знает, как рисовать себя с правильным вращением.
Таким образом, золотая середина может быть в избегать взаимодействия с CGImage в большинстве приложений. UIImage должен делать почти все, что вы хотите, и обрабатывать информацию о вращении более высокого уровня и т.д. В противном случае вы попадаете в странные ситуации, когда большинство изображений рисуются правильно, но некоторые поворачиваются.