新浪微博客户端(39)-从图库或相机中选择图片

Posted 夜行过客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新浪微博客户端(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)-从图库或相机中选择图片的主要内容,如果未能解决你的问题,请参考以下文章

从图库中挑选或从相机捕获的高质量图像

安卓手机怎么在新浪微博上传动图

从图库或相机中选择图像的对话框

Android 相机和图库

将相机图像上传到 Firebase

从图库上传图像或单击移动相机流星 android 应用程序中的图像