关于软件PicDecor的制作笔记(三)

来源:互联网 发布:质量数据分析管理办法 编辑:程序博客网 时间:2024/06/01 18:52

关于软件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

这样就完成了。

0 0
原创粉丝点击