In addition to the sch answer, it is worth noting how UIImageView can be used in different ways with UIView.
The approach with ImageView is that you change its .image property. This means that the image is cached on the view stack. If the image changes each frame, it does not give you much. But if it is not, it is a significant improvement. In most games / applications, most objects do not change every frame.
You can change the location, rotation, and opacity of a UIView through calls to the underlying CALayer. This is just a change in the transformation matrix, so slight / non-execution time is superimposed.
I highly recommend that anyone doing real-time 2D graphics not familiar with this argument should read https://developer.apple.com/library/ios/qa/qa1708/_index.html , which explains the argument much better and gives sample code. This is surprisingly easy to do.
The idea of ββwrapping a game object in a UIImageView seems contradictory because you do not have to separate the game logic from the presentation level, and this ties them together. However, just changing my prototype of the game in accordance with the recommendation of Apple, I get a double frame rate, so I really want to compromise with my architectural purity.
source share