Вы можете использовать CALayer
для этого: он легче, чем UIImageView
, и очень прост в использовании.Идея основана на примерах из этого поста и взята из рабочего проекта.
// "sprites.png" is a 192x128 picture containing two rows of three 64x64 sprites each
NSString *path = [[NSBundle mainBundle] pathForResource:@"sprites.png" ofType:nil];
CGImageRef img = [UIImage imageWithContentsOfFile:path].CGImage;
imgLayer = [CALayer layer];
imgLayer.contents = (__bridge id)img;
// Frame defines the position of your sprite inside your view
imgLayer.frame = CGRectMake(horOffset, verOffset, 64, 64);
imgLayer.bounds = CGRectMake(0, 0, 64, 64); // The size of an individual sprite
// Pick the sprite from the top row, left column
imgLayer.contentsRect = CGRectMake(0, 0, 1.0/3.0, 1.0/2.0);
// Top row, middle column
// imgLayer.contentsRect = CGRectMake(1.0/3, 0, 1.0/3.0, 1.0/2.0);
// Top row, right column
// imgLayer.contentsRect = CGRectMake(2.0/3, 0, 1.0/3.0, 1.0/2.0);
// Bottom row, left column
// imgLayer.contentsRect = CGRectMake(0, 1.0/2, 1.0/3.0, 1.0/2.0);
// Bottom row, middle column
// imgLayer.contentsRect = CGRectMake(1.0/3, 1.0/2, 1.0/3.0, 1.0/2.0);
// Bottom row, right column
// imgLayer.contentsRect = CGRectMake(2.0/3, 1.0/2, 1.0/3.0, 1.0/2.0);
[self.layer addSublayer:imgLayer];