Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/targetcloud/tgphotopicker

the best photo picker plugin in swift
https://github.com/targetcloud/tgphotopicker

photo-picker photopicker

Last synced: 2 days ago
JSON representation

the best photo picker plugin in swift

Awesome Lists containing this project

README

        

# TGPhotoPicker

the best photo picker plugin in swift(iOS8+)
No using picture resources, based on TGImage

![Swift](https://img.shields.io/badge/Swift-3.0-orange.svg)
![Build](https://img.shields.io/badge/build-passing-green.svg)
![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)
![Platform](https://img.shields.io/cocoapods/p/Pastel.svg?style=flat)
![Cocoapod](https://img.shields.io/badge/pod-v0.0.5-blue.svg)

## Demo Screenshot

###### 照片选择界面(.weibo)更多效果在下面哦:)

###### 参数调节界面(只为方便直观查看本插件的参数效果,实际使用时请直接参考TGPhotoPickerConfig.swift提供的参数)

###### 自定义拍照界面

## Recently Updated
- 0.0.5 添加AlertSheet类和useCustomActionSheet配置属性
- 0.0.4 新增11个属性,向下兼容iOS8,其中最主要的新增功能是2个,1是允许用户选择使用iOS8或iOS10拍照功能,推荐仍使用iOS8,默认使用iOS10;2是拍照时是否同时把拍照结果保存到系统相册中去,默认不保存
- 0.0.3 丰富的参数,`DIY`你满意的一款photo picker

## Features
- [x] 不使用图片资源,基于TGImage实现
- [x] 支持`链式`编程配置,程序员的最爱
- [x] 支持`Cocoapods`
- [x] 支持2种`遮罩`模式(直接在选择的照片cell上显示遮罩、选择到最大照片数量后其余照片cell显示遮罩)
- [x] 支持选择完成后,长按控件的照片cell进行位置调整(iOS `9` 及以上有效)
- [x] 支持2种`删除`模式(选择完成后直接点每个照片cell上的删除按钮删除、选择完成后预览单个照片大图时点工具栏上的删除按钮删除)
- [x] 支持选择指示器`选择时的顺序`数字显示(每个照片cell的状态有5种状态:未选择、选中状态、数字选中状态、删除状态、按住删除按钮时的高亮状态)
- [x] 支持2种`选择`模式(直接选择、预览选择)
- [x] 预置`weibo`、`wechat` 2种成组配置模式,省去多个参数配置,简化为一句代码配置
- [x] 支持8种`选择样式`(类型)`单勾`、`圈`、`方块`、`带`、`斜带`、`三角`、`心`、`星`
- [x] 支持4种`选择位置`(左上、左下、右上、右下)
- [x] 支持`tinColor`统一设置风格
- [x] 支持选择指示器`大小调节`
- [x] 自由选择iOS8或iOS10拍照功能
- [x] 轻量级、使用超灵活、功能超强大
- [x] 用例丰富,快速上手

## Usage
总体分为2种使用方式,有界面的话,用TGPhotoPicker实例化(即多选照片选择完成后把数据呈现在控件上),不需要界面的话用TGPhotoPickerManager.shared.takePhotoModels单例方法获取多选照片数据(这个又分两种,用模型或不用模型(直接用`分开的数组`))

###### 提示:

`1、请先在info.plist中添加以下两个key,以请求相机相册的访问权限(iOS10)`

`NSCameraUsageDescription`(Privacy - Camera Usage Description)
`NSPhotoLibraryUsageDescription`(Privacy - Photo Library Usage Description)

`2、作者的Xcode为8.3.3(8E3004b)若你的版本过低,可能会在TGPhotoPickerConfig.swift文件的case .smartAlbumScreenshots:处出现错误提示:Enum case 'smartAlbumScreenshots' not found in type 'PHAssetCollectionSubtype'   报错原因是这是iOS10.2/10.3新增两个值,   解决办法:1、请升级你的Xcode 2、注释相关代码`

#### 使用默认(有界面)
```swift
lazy var picker: TGPhotoPicker = TGPhotoPicker(self, frame: CGRect(x: 0, y: 50, width: UIScreen.main.bounds.width, height: 200))

override func viewDidLoad() {
super.viewDidLoad()
       //放到界面中去
       self.view.addSubview(picker)
}
```

#### 带配置(有界面)
```swift
lazy var picker: TGPhotoPicker = TGPhotoPicker(self, frame: CGRect(x: 0, y: 50, width: UIScreen.main.bounds.width, height: 200)) { (config) in
config.type = .weibo
       //更多配置在这里添加
   }
```

#### 带配置(链式)
```swift
lazy var picker: TGPhotoPicker = TGPhotoPicker(self, frame: CGRect(x: 0, y: 50, width: UIScreen.main.bounds.width, height: 200)) { (config) in
config.tg_type(.wechat)
.tg_checkboxLineW(1)
}
```

#### 带配置(单例配置对象)
```swift
lazy var picker: TGPhotoPicker = TGPhotoPicker(self, frame: CGRect(x: 0, y: 50, width: UIScreen.main.bounds.width, height: 200)) { _ in
TGPhotoPickerConfig.shared.tg_type(.wechat)
.tg_checkboxLineW(1)
.tg_toolBarH(50)
.tg_useChineseAlbumName(true)
}
```

#### 其他使用方式(无界面) `模型`数组
```swift
TGPhotoPickerManager.shared.takePhotoModels(true, true) { (array) in
        //示例代码
self.picker.tgphotos.removeAll()
self.picker.tgphotos.append(contentsOf: array)
DispatchQueue.main.async {
self.picker.reloadData()
}
}
```

#### 其他使用方式(无界面) 4个`分开独立`的数组(即模型里成员分出来的)
```swift
TGPhotoPickerManager.shared.takePhotos(true, true, { (config) in
//链式配置
config.tg_type(TGPhotoPickerType.weibo)
.tg_confirmTitle("我知道了")
.tg_maxImageCount(12)
}) { (asset, smallImg, bigImg, data) in
        //示例代码
           self.picker.tgphotos.removeAll()
for i in 0..

#### 2

#### 3

#### 4

#### 5

#### 6

#### 7

#### 8

#### 9

#### 10

#### 11

#### 12

#### 13

#### 14

#### 15

#### 16

#### 17

#### 18

#### 19

## 运行效果

#### diagonalBelt
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/diagonalBelt.gif)

#### circle
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/circle.gif)

#### belt
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/b.gif)

#### square
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/s.gif)

#### onlyCheckbox
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/o.gif)

#### triangle
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/t.gif)

#### heart
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/h.gif)

#### star
![](https://github.com/targetcloud/TGPhotoPicker/blob/master/gif/star.gif)

## Installation
- 下载并拖动TGPhotoPicker到你的工程中

- Cocoapods
```
pod 'TGPhotoPicker'
```

## Reference
- http://blog.csdn.net/callzjy
- https://github.com/targetcloud/TGImage

如果你觉得赞,请`Star`