Giter Club home page Giter Club logo

acmediaframe's Introduction

ACMediaFrame

一个完整的媒体库选择和展示的框架。包括本地图片、视频选取,拍摄、录像等,并得到对应的用于上传的数据类型,再也不用担心媒体文件上传了。

ACMediaFrameExampleGif.gif

导航

基本要求

实现功能

  • 本地图片视频选择、拍照录制等一条龙轻松实现
  • 框架主体是一个view,已经实现高度配置,不用再去做任何处理
  • 框架主体形势支持:添加媒体、预览展示媒体、混合编辑(添加和预览展示一起实现)
  • 选择媒体上支持:删除、限定最大选择数数量、同个媒体资源是否多次选择等。、
  • 从本地相册选择图片用到了TZImagePickerController;查看图片视频用到了MWPhotoBrowser;底部弹出框用到ACAlertController替代系统弹框
  • 自定义媒体model,返回图片、视频上传数据类型,如:NSData或视频路径。不用为了得到上传的数据类型做任何处理了。

如何添加

  • 使用 CocoaPods
    • 待支持
  • 手动添加
    • ACMediaFrame文件拉到项目中
    • 添加头文件#import "ACMediaFrame.h"

使用详情(具体看 ACMediaFrameExample 示例)

demo目录分析

  • AddTableViewController 添加媒体的演示
  • DisplayTableViewController 预览媒体的演示
  • EditTableViewController 添加和预览混合编排的演示
// 唯一获取初始化高度的方法
CGFloat height = [ACSelectMediaView defaultViewHeight];

// 初始化
ACSelectMediaView *mediaView = [[ACSelectMediaView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, height)];

// 需要展示的媒体的资源类型,当前是仅本地图库
mediaView.type = ACMediaTypePhoto;

// 是否允许 同个图片或视频进行多次选择
mediaView.allowMultipleSelection = NO;

//视情况看是否需要改变高度,目前单独使用且作为tableview的header,并不用监控并改变高度
[mediaView observeViewHeight:^(CGFloat mediaHeight) {
    //
}];

// 随时获取选择好媒体文件
[mediaView observeSelectedMediaArray:^(NSArray<ACMediaModel *> *list) {
// do something
NSLog(@"list.count = %lu",(unsigned long)list.count);
}];

// 添加到控件上
self.tableView.tableHeaderView = mediaView;

属性自定义

demo中有些属性可能没用上,不同属性的设置可以达成不同的效果

  • type

需要展示的媒体的资源类型:如仅显示图片等,默认是 ACMediaTypePhotoAndCamera

e.g. 点击加号按钮,自定义所想要的媒体资源选项
mediaView.type = ACMediaTypePhoto
  • preShowMedias

预先展示的媒体数组。如果一开始有需要显示媒体资源,可以先传入进行显示,没有的话可以不赋值。 传入的如果是图片类型,则可以是:UIImage,NSString,至于其他的都可以传入 ACMediaModel类型

e.g. 在预览或者之前已经有图片的情况下,需要传入进行预先展示
mediaView.preShowMedias = @[@"bg_1", @"bg_2", @"bg_3"];
  • maxImageSelected

最大图片选择张数. default is 9

e.g. 自定义从本地相册中所选取的最大数量
mediaView.maxImageSelected = 5;
  • showDelete

是否显示删除按钮. Defaults is YES

e.g. 一般在预览情况下设置为 NO
mediaView.showDelete = NO;
  • showAddButton

是否需要显示添加按钮. Defaults is YES

e.g. 一般在预览情况下设置为 NO
mediaView.showAddButton = NO;
  • allowPickingVideo

是否允许 在选择图片的同时可以选择视频文件. default is NO

e.g. 如果希望在选择图片的时候,出现视频资源,那么可以设置为 YES
mediaView.allowPickingVideo = NO;
  • allowMultipleSelection

是否允许 同个图片或视频进行多次选择. default is YES

e.g.  如果不希望已经选择的图片或视频,再次被选择,那么可以设置为 NO
mediaView.allowMultipleSelection = NO;
  • backgroundColor

底部collectionView的背景颜色,有特殊颜色要求的可以单独去设置


版本更新

  • 1.3.2 : 上一版本处理好之后,没有同时测试相册和相机选择图片的情况,所以出现了点问题,现在这版本就是修改这个问题,很感谢小伙伴的使用和提供的bug,由于自己能力有限,所以难免会有些许bug,不打紧,你们发现bug告诉我,我会尽快修复。。。
  • 1.3.1 : 对上一版本的简单改动,修改获取主控制器失败的方法,以及继续完善
  • 1.3.0 : 改动比较大的一次,首先是代码整体层次上变动了下,另外添加了自己写的一个底部弹出框功能,添加几个开放属性(是否在图片中可以选择视频、选择的图片下次是否可以继续选择等)
  • 1.2.0 : 由于上次的提交,导致一个问题(设置的隐藏添加图片按钮失效的问题),当时没有考虑完全,所以这次进行修改并修复有默认图片是显示的一些布局问题;另外继续完善几个开放接口,比如设置选择图片数量等。
  • 1.1.0 :
    • 添加了几个属性,使得框架更容易集成和修改。现在不仅可以用来选择图片等媒体资源,同时也可以只是用来展示等。
    • 修改了添加框架的头文件等
  • 1.0.1 : 添加一个媒体类型,默认媒体资源是本地图片、视频,拍摄的图片、录像等,现在可以自己选择类型,例如:当只需要图片时,就设置媒体类型属性即可。
  • 1.0.0 : 最初原型,封装的选择媒体以及布局的页面,把媒体资源的处理全进行封装,减少重复工作,只需添加到视图上,然后接收获取的媒体数据。

Hope

  • 代码使用过程中,发现任何问题,可以随时issues me
  • 如果有更多建议或者想法也可以直接联系我 QQ:331864805
  • 觉得框架对你有一点点帮助的,就请支持下,点个赞。

Licenses

All source code is licensed under the MIT License.

acmediaframe's People

Contributors

honeycao avatar

Watchers

白鸽 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.