В дополнение к ответу sch стоит отметить, как UIImageView можно использовать иначе, чем UIView.
Подход с ImageView заключается в том, что вы изменяете его свойство .image. Это означает, что изображение кэшируется в стеке представления. Если изображение меняет каждый кадр, то это мало что дает. Но если это не так, это значительное улучшение. В большинстве игр / приложений большинство объектов не меняют каждый кадр.
Вы можете изменить местоположение, ротацию и непрозрачность UIView с помощью вызовов базового CALayer. Это всего лишь изменение в матрице преобразования, поэтому оно не требует / не теряет времени.
Я настоятельно рекомендую всем, кто делает 2D-графику в реальном времени, кто не знаком с этим аргументом, читает https://developer.apple.com/library/ios/qa/qa1708/_index.html, который объясняет аргумент намного лучше и дает пример кода. Это удивительно просто сделать.
Идея оборачивания игрового объекта в UIImageView кажется нелогичной, поскольку вы не хотите отделять игровую логику от уровня представления, и это связывает их вместе. Однако, только модифицировав мой прототип игры в соответствии с рекомендацией Apple, я получаю удвоенную частоту кадров, поэтому я очень хочу поставить под угрозу свою архитектурную чистоту.