@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIActionSheetDelegate>


@end


@implementation ViewController


- (void)viewDidLoad {

[super viewDidLoad];

UIButton *butt = [UIButton buttonWithType:UIButtonTypeCustom];

butt.frame = CGRectMake(100, 100, 50, 50);

[butt setTitle:@"点击" forState:UIControlStateNormal];

[butt setBackgroundColor:[UIColor grayColor]];

[butt addTarget:self action:@selector(goShowAlertView:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:butt];


}


- (void)goShowAlertView:(id)sender

{

double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。

if(version>=8.0f){

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

[alertController addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

[self selecetPhotoAndLibary:0];

}]];

[alertController addAction:[UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

[self selecetPhotoAndLibary:1];

}]];

[alertController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {

NSLog(@"取消");

}]];

[self presentViewController:alertController animated:YES completion:nil];

}else{

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Wdeprecated-declarations"

UIActionSheet *sheetView = [[UIActionSheet alloc] initWithTitle:@"提示" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"相册",@"取消", nil];

#pragma clang diagnostic pop

sheetView.actionSheetStyle = UIActionSheetStyleDefault;

[sheetView showInView:self.view];

}


}


#pragma mark actionSheet_delegate 点击事件

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex NS_DEPRECATED_IOS(2_0, 8_3) __TVOS_PROHIBITED{

[self selecetPhotoAndLibary:buttonIndex];

}



#pragma mark-one anTag 1是拍照,2是相册

- (void)selecetPhotoAndLibary:(NSInteger)anTag{

switch (anTag) {

case 0:

{

UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])

{

UIImagePickerController *picker = [[UIImagePickerController alloc] init];

picker.delegate = self;

//设置拍照后的图片可被编辑

picker.sourceType=UIImagePickerControllerSourceTypeCamera;

picker.allowsEditing = YES;

picker.sourceType = sourceType;

[self presentViewController:picker animated:YES completion:nil];

}

else

{

UIAlertView *aletView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"模拟器不可用" delegate:nil

cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

[aletView show];

}

break;


}

case 1:

{

UIImagePickerController *picker=[[UIImagePickerController alloc] init];

picker.delegate=self;

picker.allowsEditing=YES;

[self presentViewController:picker animated:YES completion:nil];

break;

}

default:

break;

}

}


#pragma mark-onnce 代理方法

- (void)p_w_picpathPickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{


UIImage *editedImage = [info objectForKey:@"UIImagePickerControllerEditedImage"];

editedImage = [self makeThumbnailFromImage:editedImage scale:1.0f];

NSString *homePath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];

NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];

NSTimeInterval last = [dat timeIntervalSince1970]*1000;

NSString *p_w_picpathViews = [homePath stringByAppendingFormat:@"/%f.jpeg", last];

//路径,图片的本地路径 NSString *p_w_picpathPath = [NSString stringWithFormat:@"/%f.jpeg", last];

[UIImageJPEGRepresentation(editedImage, 1.0f) writeToFile:p_w_picpathViews atomically:YES];

[self dismissViewControllerAnimated:YES completion:^{

}];

}


#pragma mark-onnce 手动实现图片压缩,可以写到分类里,封装成常用方法。按照大小进行比例压缩,改变了图片的size。

- (UIImage *)makeThumbnailFromImage:(UIImage *)srcImage scale:(double)p_w_picpathScale {

UIImage *thumbnail = nil;

CGSize p_w_picpathSize = CGSizeMake(srcImage.size.width * p_w_picpathScale, srcImage.size.height * p_w_picpathScale);

if (srcImage.size.width != p_w_picpathSize.width || srcImage.size.height != p_w_picpathSize.height)

{

UIGraphicsBeginImageContext(p_w_picpathSize);

CGRect p_w_picpathRect = CGRectMake(0.0, 0.0, p_w_picpathSize.width, p_w_picpathSize.height);

[srcImage drawInRect:p_w_picpathRect];

thumbnail = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

}

else

{

thumbnail = srcImage;

}

return thumbnail;

}

#pragma mark-onnce 取消的代理方法

- (void)p_w_picpathPickerControllerDidCancel:(UIImagePickerController *)picker

{

[self dismissViewControllerAnimated:YES completion:^{

}];

}