#import
@interface ViewController : UIViewController
@property(strong,nonatomic) UIButton *btn;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.btn.frame = CGRectMake(100, 50, 150, 44); self.btn.backgroundColor = [UIColor blackColor];
[self.btn setTitle:@"选择按钮" forState:UIControlStateNormal]; [self.btn setTintColor:[UIColor orangeColor]];
[self.btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.btn];
}
-(void)clickBtn:(UIButton *)sender
{
UIAlertController *alertcontroller = [UIAlertController alertControllerWithTitle:@"请选择" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *oKAction = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self photo];
}];
UIAlertAction *xiangji = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self camera];
}];
UIAlertAction *localVideo = [UIAlertAction actionWithTitle:@"本地视频" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self localVideo];
}];
UIAlertAction *shotVideo = [UIAlertAction actionWithTitle:@"拍摄视频" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self shotVideo];
}];
//将UIAlertAction添加到UIAlertController上
[alertcontroller addAction:oKAction];
[alertcontroller addAction:xiangji];
[alertcontroller addAction:localVideo];
[alertcontroller addAction:shotVideo];
[alertcontroller addAction:cancelAction];
//模态视图显示
[self presentViewController:alertcontroller animated:YES completion:nil];
}
//相册
-(void)photo{
/** UIImagePickerControllerSourceTypePhotoLibrary ,//来自图库 UIImagePickerControllerSourceTypeCamera ,//来自相机 UIImagePickerControllerSourceTypeSavedPhotosAlbum //来自相册 */
//初始化UIImagePickerController 类
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
//指定代理
imagePicker.delegate = self;
//允许用户进行编辑
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//以模式视图控制器的形式显示
[self presentViewController:imagePicker animated:YES completion:nil];
}
//相机
-(void)camera
{
//判断是否可以打开相机,模拟器此功能无法使用
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"错误" message:@"没有摄像头" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"返回" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
// return;
}else{
UIImagePickerController *imageP = [[UIImagePickerController alloc] init];
imageP.delegate = self;
imageP.allowsEditing = YES;
imageP.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imageP animated:YES completion:nil];
}
}
//本地视频
-(void)localVideo{
UIImagePickerController *imagePV = [[UIImagePickerController alloc] init];
imagePV.delegate = self;
imagePV.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
//自定媒体类型
imagePV.mediaTypes = @[@"public.movie"];
[self presentViewController:imagePV animated:YES completion:nil];
}
//拍摄视频
-(void)shotVideo{
UIImagePickerController *imagePS = [[UIImagePickerController alloc] init];
imagePS.delegate = self;
imagePS.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePS.mediaTypes = @[@"public.movie"];
[self presentViewController:imagePS animated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
/**
选取的信息都在info中,info 是一个字典。
字典中的键:
NSString *const UIImagePickerControllerMediaType ;指定用户选择的媒体类型(文章最后进行扩展)
NSString *const UIImagePickerControllerOriginalImage ;原始图片
NSString *const UIImagePickerControllerEditedImage ;修改后的图片
NSString *const UIImagePickerControllerCropRect ;裁剪尺寸
NSString *const UIImagePickerControllerMediaURL ;媒体的URL
NSString *const UIImagePickerControllerReferenceURL ;原件的URL
NSString *const UIImagePickerControllerMediaMetadata;当数据来源是照相机的时候这个值才有效
*/
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.image"]) {
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
//如果是拍摄的照片
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
//保存在相册
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake((self.view.frame.size.width-100)/2, 200, 100, 100)];
imageV.image = image;
imageV.layer.cornerRadius = imageV.frame.size.width/2;
//设置短片界限
imageV.clipsToBounds = YES;
[self.view addSubview:imageV];
}
else if ([mediaType isEqualToString:@"public.movie"]){
//获取视图的url
NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];
//播放视频
NSLog(@"%@",url);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end