UIActionSheet是处理ios弹出按钮的类,下面我们将使用uialertsheet来实现app的拍照和相册选择功能,先看看UIActionSheet功能实现后的效果,如图。

实现步骤:
1:首先在需要在info.plist内添加手机相册和拍照的权限,添加这两行。
Privacy - Photo Library Usage Description //相册 Privacy - Camera Usage Description //拍照
如图这样添加。

2:在界面添加一个button按钮,并实现UIImagePickerControllerDelegate,UIActionSheetDelegate,UINavigationControllerDelegate这三个代理类。
3:给button添加一个事件,本人是拉线的,然后使用UIActionSheet实现图上面的功能,代码如下。
�#import "ViewController.h"
@interface ViewController ()<UIImagePickerControllerDelegate,UIActionSheetDelegate,UINavigationControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    
}
//点击按钮,弹出UIActionSheet提示框
- (IBAction)showUIActionSheet:(UIButton *)sender {
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"添加图片"
                                                             delegate:self
                                                    cancelButtonTitle:@"取消"
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:@"相册" , @"拍照", nil];
    [actionSheet showInView:self.view];
}
#pragma mark - UIActionSheetDelegate 代理方法,点击里面的按钮会设置不同的源
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (2 == buttonIndex) {
        return;
    }
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        //显示图片的控制器
        UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
        [imgPicker.view setBackgroundColor:[UIColor clearColor]];
        [imgPicker setDelegate:self];
        if (0 == buttonIndex) { //设置相册源
            [imgPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        } else if (1 == buttonIndex) { //模拟器不能使用相机,会报错,只能真机使用
            [imgPicker setSourceType:UIImagePickerControllerSourceTypeCamera];
        }
        [self presentViewController:imgPicker animated:YES completion:nil];
    }];
}
#pragma mark - UIImagePickerControllerDelegate 代理方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissViewControllerAnimated:YES completion:nil];
}
//图片选中之后的回调方法,也是代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
    
    [self dismissViewControllerAnimated:YES completion:nil];
    //获取相册或拍照的图片对象selectedImg
    UIImage *selectedImg = info[UIImagePickerControllerOriginalImage];
    //对图片对象进行操作...
    
}
@end
�完毕!