Giter VIP home page Giter VIP logo

albumpicker's Introduction

AlbumPicker

类似于微信里集成的相册功能,可以选择要上传照片或者视频


选择与预览照片:


关于AlbumPicker:

  • 分别用Swift与Objective-C编写两个版本
  • 可以选择相册里面的所有资源,也可以只设置选择图片
  • 根据要求限制选取资源的最大数量,默认没有限制

安装

Objective-C

  1. 打开AlbumPicker.xcworkspace工作区选择AlbumPicker项目
  2. 把项目里的LSYAlbumPicker_OC文件及里面的所有文件拷贝到其他Objective-C项目中
  3. 由于项目中用到很多宏定义,所以需要把AlbumPicker-prefix.pch里面自定义宏拷贝到其他项目中的.pch文件中

Swift

  1. 基于Xcode 6.4 Swift 1.2编译正常,低版本或者高版本的Xcode可能会因为Swift版本不同而编译不通过,
  2. 打开AlbumPicker.xcworkspace工作区选择AlbumPicker_Swift项目
  3. 把项目里的LSYAlbumPicker_Swift文件以及里面所有文件拷贝到其他Swift项目中

使用

导入头文件

Objective-C

#import "LSYAlbumCatalog.h"

在该项目里用的是自定义的导航栏,可以根据项目的需求来改变导航栏样式。所以在该项目里导入了两个头文件

#import "LSYAlbumCatalog.h"
#import "LSYNavigationController.h"

Swift

Swift直接使用即可

打开相册

Objective-C

    LSYAlbumCatalog *albumCatalog = [[LSYAlbumCatalog alloc] init];
    albumCatalog.delegate = self;
    LSYNavigationController *navigation = [[LSYNavigationController alloc] initWithRootViewController:albumCatalog];
    [self presentViewController:navigation animated:YES completion:^{
    }];

Swift

    var albumCatalog:LSYAlbumCatalog! = LSYAlbumCatalog()
    albumCatalog.delegate = self
    var navigation:LSYNavigationController! = LSYNavigationController(rootViewController:albumCatalog)
    self.presentViewController(navigation, animated: true) { () -> Void in
            
        }

代理实现

Objective-C

实现LSYAlbumCatalogDelegate的方法

-(void)AlbumDidFinishPick:(NSArray *)assets
{
    for (ALAsset *asset in assets) {
        if ([[asset valueForProperty:@"ALAssetPropertyType"] isEqual:@"ALAssetTypePhoto"]) {
            UIImage * img = [UIImage imageWithCGImage:asset.defaultRepresentation.fullResolutionImage];
        }
        else if ([[asset valueForProperty:@"ALAssetPropertyType"] isEqual:@"ALAssetTypeVideo"]){
            NSURL *url = asset.defaultRepresentation.url;
        }
    }
}

Swift

    func AlbumDidFinishPick(assets: NSArray) {
        for asset in assets {
            if  (asset as!ALAsset).valueForProperty("ALAssetPropertyType").isEqual("ALAssetTypePhoto") {
                var img = UIImage(CGImage: (asset as! ALAsset).defaultRepresentation().fullResolutionImage().takeUnretainedValue());
            }
            else if (asset as!ALAsset).valueForProperty("ALAssetPropertyType").isEqual("ALAssetTypeVideo") {
                var url = (asset as! ALAsset).defaultRepresentation().url()
            }
        }
    }

选择资源种类

Objective-C

选择相册中的所有资源,并且设置最多选择的数量

    LSYAlbumCatalog *albumCatalog = [[LSYAlbumCatalog alloc] init];
    albumCatalog.maximumNumberOfSelectionMedia = 5;

只选择相册中的相片,并且设置最多选择的数量

    LSYAlbumCatalog *albumCatalog = [[LSYAlbumCatalog alloc] init];
    albumCatalog.maximumNumberOfSelectionPhoto = 5;

Swift

选择相册中的所有资源,并且设置最多选择的数量

    var albumCatalog:LSYAlbumCatalog! = LSYAlbumCatalog()
    albumCatalog.maximumNumberOfSelectionMedia = 5

只选择相册中的相片,并且设置最多选择的数量

    var albumCatalog:LSYAlbumCatalog! = LSYAlbumCatalog()
    albumCatalog.maximumNumberOfSelectionPhoto = 5

资源上传

Objective-C

-(void)AlbumDidFinishPick:(NSArray *)assets
{
    dispatch_semaphore_t sem = dispatch_semaphore_create(0);
    dispatch_queue_t queue = dispatch_queue_create("uploadImg", NULL);
    dispatch_async(queue, ^{
        for (ALAsset *asset in assets) {
            if ([[asset valueForProperty:@"ALAssetPropertyType"] isEqual:@"ALAssetTypePhoto"]) {
                //执行要上传图片的操作...
                void (^uploadImg) (BOOL isFinish) = ^(BOOL isFinish){
                  //上传完成后回调
                    dispatch_semaphore_signal(sem);
                };
            }
            dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
        }
    });
}

Swift

    func AlbumDidFinishPick(assets: NSArray) {
        var sem = dispatch_semaphore_create(0);
        var queue = dispatch_queue_create("uploadImg", nil)
        dispatch_async(queue, { () -> Void in
            for asset in assets {
                if  (asset as!ALAsset).valueForProperty("ALAssetPropertyType").isEqual("ALAssetTypePhoto") {
                    //执行要上传图片的操作...
                    var uploadImag = {(isFinish:Bool) -> Void in
                        //上传完成后回调
                         dispatch_semaphore_signal(sem);
                    }
                }
                dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
            }
        })
    }

albumpicker's People

Contributors

ggghub avatar

Watchers

 avatar  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.