//
// RootViewController.m
#import "RootViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
//创建背景视图
-(void)createUIView
{
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(9, 49, 302, 302)];
view.backgroundColor = [UIColor cyanColor];
view.tag = 100;
[self.view addSubview:view];
}
//创建提示视图
-(void)createUIImageView
{
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 360, 100, 100)];
imageView.image = [UIImage imageNamed:@"king2.png"];
[self.view addSubview:imageView];
}
//进行拼图
-(void)segmentImage
{
//<1>获取图片
UIImage * image =[UIImage imageNamed:@"king2.png"];
//<2>获取分割以后每一个小块的宽和高
float height = image.size.height / 4;
float width = image.size.width / 4;
//<3>获取到背景视图
UIView * backView = (UIView *)[self.view viewWithTag:100];
//<4> 创建16个UIImageView显示分割以后的小图片
for(int i = 0;i<4;i++)
{
for(int j = 0;j<4;j++)
{
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(2 + width * j, 2 + height * i, width - 2, height -2)];
//imageView.backgroundColor = [UIColor orangeColor];
//<5>对图片进行分割 ---- 抠图
//图片分割类CGImageRef
//CGImageRef这个类会根据提供的视图的大小进行等比例分割
//CGImageCreateWithImageInRect
//第一个参数:被分割的图片的CGImage类型
//第二个参数:将图片按照什么尺寸划分
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, imageView.frame);
//image.CGImage 这个方法是将UIImage转化成CGImage
//<6>将CGImage类型的图片转化成UIImage类型的图片
UIImage * littleImage = [UIImage imageWithCGImage:imageRef];
//imageWithCGImage:这个方法是将CGImage转化成UIImage
//<7>将16个image添加到16个UIImageView视图上
imageView.image = littleImage;
//<8>隐藏一个小的子视图
if(i * j == 9)
{
imageView.tag = 998;
[imageView setHidden:YES];
}
//<9>为每一个小的子视图添加手势
imageView.userInteractionEnabled = YES;
//调用自定义方法
[self addGestureRecgnizerOnImageView:imageView];
[backView addSubview:imageView];
}
}
}
//为每一个视图添加手势的方法---自定义方法
-(void)addGestureRecgnizerOnImageView:(UIImageView *)imageView
{
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
//设置点击次数
tap.numberOfTapsRequired = 1;
//设置手指根数
tap.numberOfTouchesRequired = 1;
//添加手势
[imageView addGestureRecognizer:tap];
}
//实现点击方法
-(void)tapAction:(UITapGestureRecognizer *)tap
{
//<1>获取点击的子视图
UIImageView * tapImageView = (UIImageView *)tap.view;
//<2>获取空的子视图
UIImageView * blockImageView = (UIImageView *)[self.view viewWithTag:998];
//<3>判断点击视图的横坐标和空视图的横坐标是否相差75
BOOL isEqualX75 = fabs(tapImageView.frame.origin.x - blockImageView.frame.origin.x) == 75;
BOOL isEquelY75 = fabs(tapImageView.frame.origin.y - blockImageView.frame.origin.y) == 75;
BOOL isEquelX0 = fabs(tapImageView.frame.origin.x - blockImageView.frame.origin.x) == 0;
BOOL isEquelY0 = fabs(tapImageView.frame.origin.y - blockImageView.frame.origin.y) == 0;
if((isEqualX75 && isEquelY0 )|| (isEquelX0 && isEquelY75))
{
[UIView animateWithDuration:0.3 animations:^{
//可以交换点击的视图和空视图
CGRect tempView = tapImageView.frame;
tapImageView.frame = blockImageView.frame;
blockImageView.frame = tempView;
} completion:nil];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor purpleColor];
[self createUIView];
[self createUIImageView];
[self segmentImage];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end