关于软件PicDecor的制作笔记(三)
之前已经介绍了关于图片获取(通过相机设备)或者从相册中选择已有相片并加载到编辑页面上,那么这一篇就介绍最后需要注意的几点地方。
1. 进行图片的编辑
既然要添加一些小饰品图片到相片上,那么就应该有一个控制器类,用来显示小饰品图片,更重要的是,要能够将用户选择的小饰品图片添加到之前的编辑界面上,一次,就需要通过设置全局变量A来讲图片传递到之前的界面。具体的做法是,可以设置一个全局变量A用来记录当前选择的图片,然后在之前的编辑界面也设置一个变量B用来接受传递过来的变量A,这样的话,当我们在小饰品选择界面选择了某一个小饰品图片时,就将这个图片值赋值给变量A,然后再编辑界面,将传递过来的变量A赋值给本类中的变量B,再将B,也就是选择的那个小饰品图片,加载在我们的相片上即可。在这里,我们通过在appDelegate中设置全局变量进行传递,具体做法是,首先,在AppDelegate函数中编写以下函数:
+(AppDelegate*)shareDelegate{
return [UIApplication sharedApplication].delegate;
}
并且定义一个用来存放图片的全局变量
@property(nonatomic) UIImage *image;
然后在饰品选择界面,点击完某一个小饰品图片后执行下面的函数:
- (IBAction)doImageBtn:(UIButton*)sender {
selectedImage = [sender backgroundImageForState:UIControlStateNormal];//将点击的这个按钮的背景图片(也就是小饰品图片)传递给这个变量selectedImage
[AppDelegate shareDelegate].image= selectedImage;//将上面的图片传递给全局变量
[self dismissViewControllerAnimated:YEScompletion:^{
}];
}
当然了,首先要在饰品控制器界面的头文件中添加这个变量:
@property(nonatomic,retain) UIImage *selectedImage;
这样,就可以将饰品小图片显示在照片上了。
那么,我们还缺少最后一点小功能的实现,也就是让饰品小图片随手指移动而移动,之前提到,我们需要建立一个专门的UIimageView类(因为涉及到的是图片的位置移动)进行设置,代码如下:
#import "MovableImageView.h"
@implementation MovableImageView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//Initialization code
}
return self;
}
//开始点触图片
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
}
//结束点触图片
-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
}
//点出图片之后进行了移动时,图片位置随手指位置移动
- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
float deltaX = [[touches anyObject] locationInView:self].x- [[touches anyObject] previousLocationInView:self].x;
float deltaY = [[touches anyObject] locationInView:self].y- [[touches anyObject] previousLocationInView:self].y;
self.transform = CGAffineTransformTranslate(self.transform,deltaX, deltaY);
}
@end
这样就完成了。