图像拼接成带动画的图块 – iOS

我正在尝试拼接图像,然后转换到下一个像这样的东西? 有关从哪里开始的任何建议? 是否可以将图像拼接成小块并使用UIView动画制作动画? 这是一个样本 。

编辑:

'#define DESIRED_WIDTH 40 '#define DESIRED_HEIGHT 60 - (void)viewDidLoad { [super viewDidLoad]; UIImage *bigImage = [UIImage imageNamed:@"background_for_Manager_App.png"]; CGRect frame = CGRectMake(0.0, 0.0, DESIRED_WIDTH, DESIRED_HEIGHT); int widthCount = (bigImage.size.width / DESIRED_WIDTH); int heightCount = (bigImage.size.height / DESIRED_HEIGHT); NSLog(@"height width %i %i",heightCount,widthCount); for (int i = 0; i <heightCount; i++) { for (int j = 0; j  1.0f) { // this is for Retina display capability rect = CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale); } CGImageRef imageRef = CGImageCreateWithImageInRect([UIImage imageNamed:@"background_for_Manager_App.png"].CGImage, rect); UIImage *result = [UIImage imageWithCGImage:imageRef scale:scale orientation:self.splicedImageView.image.imageOrientation]; CGImageRelease(imageRef); return result; } 

将此代码用于裁剪(您最好将其添加为UIImage类别):

 - (UIImage *)imageCroppedWithRect:(CGRect)rect { if (self.scale > 1.0f) { // this is for Retina display capability rect = CGRectMake(rect.origin.x * self.scale, rect.origin.y * self.scale, rect.size.width * self.scale, rect.size.height * self.scale); } CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect); UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; CGImageRelease(imageRef); return result; } 

使用方法:您应该使用此代码为UIImage创建一个类别。 然后加载图像并将其切片:

 UIImage *bigImage = [UIImage imageNamed:@"big_image"]; CGRect frame = CGRectMake(0.0, 0.0, DESIRED_WIDTH, DESIRED_HEIGHT); for (int i = 0; i < bigImage.size.height / DESIRED_HEIGHT; i++) { for (int j = 0; i < bigImage.size.width / DESIRED_WIDTH; j++) { UIImage *piece = [bigImage imageCroppedWithRect:frame]; UIImageView *view = [[UIImageView alloc] initWithImage:piece]; view.frame = frame; [self.view addSubview:view]; [view release]; frame.origin.x += frame.size.width; } frame.origin.x = 0.0; frame.origin.y += frame.size.height; } 

只需将图像切成碎片,然后创建适当数量的UIImageView对象,并将它们按照正确的顺序放置到视图中。 现在你可以根据自己的意愿为它们制作动画。

另请注意,DESIRED_WIDTH和DESIRED_HEIGHT必须在没有余数的情况下划分图像的边。

对于video上的动画,您应该使用UIViewAnimationOptionTransitionFlipFromLeft选项:

 [UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ // hide your image here } completion:nil];