我们在进行图片解析的时候要用到的是第三方SDWebImage文件,引它里面的#import "UIImageView+WebCache.h".然后到设置里的选择Build Phases里选择Compile Sources里搜索里打sd出现的全选回车,在弹出的对话框内写入"-fobjc-arc",因为我们选择在是手动管理内存,这里我们进行修改
这里我们要播放gif图片所以也要引用sd里的"UIImage+GIF.h"的头文件
我们要用到UIActionSheet,UIImagePickerController, UINavigationController的协议内容 所以我们要签署它们三个的协议对用的是<UIActionSheetDelegate, UINavigationControllerDelegate,UIImagePickerControllerDelegate>
不用设置代理人
准备工作:我们在didLoad里建立一个图片
加载网络图片
[self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://v.juhe.cn/movie/picurl?2583084"]];
播放本地的gif的图片
self.imageView.image = [UIImage sd_animatedGIFNamed:@"01"];
下面我们要做的效果就是将本地里的图片加载到我们创建的图片视图位置
1.创建一个UIActionSheet
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"选取图像" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"从相册中选取", nil];
2.将创建的对象actionSheet添加到视图上(此处与以往不同)
[actionSheet showInView:self.view];
3.这个类的对应实现协议方法
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"%ld",buttonIndex);//两个按钮一个是0一个是1
if (buttonIndex == 0) {
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
//切换方法模态和push
设置代理人
//这个地方很特殊,这个代理人执行两套协议,需要签订两个协议
picker.delegate =s elf;
//允许进行编辑
picker.allowsEditing = YES;
//让它显示出来,所用方法是模态.
[self presentViewController:picker animated:YES completion:^{
}];
}
}
4.为ImageView添加一个长按的shoushi
(1)打开ImageView的用户交互
self.imageView.userInteractionEnabled = YES;
(2)创建长按对象
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];
[self.imageView addGestureRecognizer:longPress];
[longPress release];
(3)长按手势的触发方法
-(void)longPressAction:(UILongPressGestureRecognizer *)longPress
{
//判断手势当前的状态,只有刚开始会保存图片
if(longPress.state == UIGestureRecognizerStateBegan)
{
//把图片写入到本地相册中 UIImageWriteToSavedPhotosAlbum(self.imageView.image, nil, nil, nil);
}
}
5.点击choose后,可以选中当前的图片,并且返回让图片显示在imageView上 UIImagePickerController协议实现方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
//隐藏的效果效果消失了,所以我们需要手动添加dismiss的方法,让相册消失
[self dismissViewControllerAnimated:YES completion:^{
}];
NSLog(@"%@",info);
//从返回过来的字典对象info中提取image UIImagePickerControllerEditedImage
UIImage *image = info[UIImagePickerControllerOriginalImage];
self.imageView.image = image;
}