#import "MainViewController.h"
#define kImageFileName @"image.png"
@interface MainViewController ()
@property (weak, nonatomic) UIButton *button;
@end
@implementation MainViewController
#pragma mark - 实例化视图
- (void)loadView
{
// 1. 实例化根视图,视图实例化时默认是透明
self.view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
// 2. 创建一个按钮,等下选择图片后,在按钮中显示选择的图片
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:CGRectMake(60, 130, 200, 200)];
[button setTitle:@"选择照片" forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor lightGrayColor]];
[self.view addSubview:button];
self.button = button;
// 按钮监听方法
[button addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside];
}
- (void)viewDidLoad
{
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// 需要找出沙盒路径
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// 设置保存文件名称
NSString *path = [documents[0] stringByAppendingPathComponent:kImageFileName];
UIImage *image = [UIImage imageWithContentsOfFile:path];
[self.button setImage:image forState:UIControlStateNormal];
}
#pragma mark - 按钮点击方法
- (void)clickButton
{
// 显示照片选择控制器
UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];
// 1) 照片源
// a 照片库[用相机拍摄以及用电脑同步的]
// b 保存的图像[用相机拍摄的]
// c 照相机
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// 2) 是否允许编辑
[imagePicker setAllowsEditing:YES];
// 3) 设置代理
[imagePicker setDelegate:self];
// 4) 显示照片选择控制器,显示modal窗口
[self presentViewController:imagePicker animated:YES completion:nil];
}
#pragma mark - UIImagePicker代理方法
#pragma mark 照片选择完成的代理方法,照片信息保存在info参数中
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"info %@", info);
// 获取编辑后的照片
UIImage *image = info[@"UIImagePickerControllerEditedImage"];
// 设置照片
[self.button setImage:image forState:UIControlStateNormal];
// 关闭照片选择器
// 注意:使用照片选择器选择的图片,只是保存在内存中
// 如果需要再次使用,选择照片后,需要做保存处理
[self dismissViewControllerAnimated:YES completion:^{
// 要保存照片需要NSData做中转
NSData *imageData = UIImagePNGRepresentation(image);
// 需要找出沙盒路径
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// 设置保存文件名称
NSString *path = [documents[0] stringByAppendingPathComponent:kImageFileName];
// 保存文件
NSLog(@"%@", path);
[imageData writeToFile:path atomically:YES];
}];
}
@end