今天还挺高兴的,总监让我添加一个从相册里面上传图片到自己的项目里面。。。。这个功能听着挺简单的,其实还是要动脑筋的,就是要考虑上传的图片要进行保存的问题,之前我还准备用coredata保存的,觉得太麻烦了,所以我就把选取的图片直接放到本地,下次进来是先从本地查询,如果本地有,就放本地的,如果没有就放我们默认设计的,大致思路就是这样。。。。。下面是代码
UIView *userSingInView;
UIImageView *photo;
self.photo = [[UIImageView alloc] initWithFrame:CGRectMake(2, 10, 70, 70)];
self.photo.image = [UIImage imageNamed:@"头像140X140.png"];
//判断本地是否有图片
NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];
NSData *imageData = [preferences objectForKey:@"image"];
if (imageData) {
self.photo.image = [UIImage imageWithData:imageData];
}
[userSignInView addSubview:self.photo];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectPhoto:)];
tap.numberOfTapsRequired = 1;
[userSignInView addGestureRecognizer:tap];
-(void)selectPhoto:(id *)sender
{
// UIImagePickerControllerSourceType sourceType=UIImagePickerControllerSourceTypeCamera;
//
// if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
//
// sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
//
// }
UIImagePickerControllerSourceType sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
sourceType = UIImagePickerControllerSourceTypeCamera;
}
UIImagePickerController * picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
picker.allowsEditing=YES;
picker.sourceType=sourceType;
[self presentViewController:picker animated:YES completion:^{
}];
}
#pragma mark --UIImagePickerControllerDelegate
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
UIImage * image=[info objectForKey:UIImagePickerControllerEditedImage];
self.photo.image=image;
//将图片保存到本地
NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];
[preferences setObject:UIImagePNGRepresentation(image) forKey:@"image"];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}