首页 > 代码库 > 新浪微博客户端(39)-从图库或相机中选择图片
新浪微博客户端(39)-从图库或相机中选择图片
DJComposeViewController.m
#pragma mark - DJComposeToolbar 代理方法 - (void)composeToolbar:(DJComposeToolbar *)toolbar didClickBtnType:(DJComposeToolbarBtnType)btnType { switch (btnType) { case DJComposeToolbarBtnTypeCamera: [self openCameraSurface]; break; case DJComposeToolbarBtnTypePicture: [self openPhotoLibrary]; break; case DJComposeToolbarBtnTypeMention: DJLog(@"@"); break; case DJComposeToolbarBtnTypeTrend: DJLog(@"#"); break; case DJComposeToolbarBtnTypeEmotion: DJLog(@"Emoji"); break; default: break; } } #pragma mark - UIImagePickerController 代理方法 /** 当用户拍照完成或从图库中选择完毕后调用此方法 */ - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)intent { // NSLog(@"%@",intent); UIImage *image = intent[UIImagePickerControllerOriginalImage]; [self.photosView addPhoto:image]; [picker dismissViewControllerAnimated:YES completion:nil]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { DJLog(@"用户取消了选择"); [picker dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - 打开相机拍摄界面或相机图库 /** 打开相机图库 */ - (void)openPhotoLibrary { // 首先判断当前图库选项是否可用 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; ipc.delegate = self; [self presentViewController:ipc animated:YES completion:nil]; } } - (void)openCameraSurface { // 判断当前相机系统是否可用 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; ipc.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentViewController:ipc animated:YES completion:nil]; } } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
DJComposePhotosView.h
#import <UIKit/UIKit.h> // 相册的最大列数 #define DJComposePhotosViewMaxColumns 3 // 相册中的图片间距 #define DJComposePhotosViewMargin 4 // 相册图片的宽高 #define DJComposePhotoWH ((DJContentWidth - (DJComposePhotosViewMaxColumns - 1) * DJComposePhotosViewMargin) / DJComposePhotosViewMaxColumns) // 相册的高度(最多9张图片) #define DJComposePhotosViewH (DJComposePhotoWH * DJComposePhotosViewMaxColumns + DJComposePhotosViewMargin * 2) @interface DJComposePhotosView : UIView - (void)addPhoto:(UIImage *)photo; @end
DJComposePhotosView.m
#import "DJComposePhotosView.h" @implementation DJComposePhotosView // 每添加一个UIImage,就把它当做一个imageView 添加到photsView中 - (void)addPhoto:(UIImage *)photo { UIImageView *imageView = [[UIImageView alloc] init]; imageView.image = photo; imageView.contentMode = UIViewContentModeScaleAspectFill; imageView.clipsToBounds = YES; [self addSubview:imageView]; } - (void)layoutSubviews { [super layoutSubviews]; NSUInteger count = self.subviews.count; for (int i = 0; i < count; i++) { UIImageView *imageView = self.subviews[i]; imageView.width = DJComposePhotoWH; imageView.height = DJComposePhotoWH; int cols = i % DJComposePhotosViewMaxColumns; imageView.x = cols * (DJComposePhotoWH + DJComposePhotosViewMargin); int rows = i / DJComposePhotosViewMaxColumns; imageView.y = rows * (DJComposePhotoWH + DJComposePhotosViewMargin); } } @end
最终效果:
新浪微博客户端(39)-从图库或相机中选择图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。