HXPHPicker
HXPHPicker copied to clipboard
Photo/Video Selector-Supports LivePhoto, GIF selection, online download of resources on iCloud, and editing of photos/videos

HXPHPicker
is a photo/video selector-supports LivePhoto, GIF selection, iCloud resource online download, photo/video editing
Features
- [x] UI Appearance supports light/dark/auto/custom
- [x] Support multiple selection/mixed content selection
- [x] Supported media types:
- [x] Photo
- [x] GIF
- [x] Live Photo
- [x] Video
- [x] Supported local media types:
- [x] Photo
- [x] Video
- [x] GIF
- [x] Live Photo
- [x] Supported network media types:
- [x] Photo
- [x] Video
- [x] Support downloading assets on iCloud
- [x] Support gesture back
- [x] Support sliding selection
- [x] Edit pictures (support animated pictures, network pictures)
- [x] Graffiti
- [x] Sticker
- [x] Text
- [x] Crop
- [x] Mosaic
- [x] Filter
- [x] Edit video (support network video)
- [x] Graffiti
- [x] Stickers (support GIF)
- [x] Text
- [x] Soundtrack (support lyrics and subtitles)
- [x] Crop duration
- [x] Crop Size
- [x] Filter
- [x] Album display mode
- [x] Separate list
- [x] Pop-ups
- [x] Multi-platform support
- [x] iOS
- [x] iPadOS
- [x] Internationalization support
- [x] English (en)
- [x] Chinese, Simplified (zh-Hans)
- [x] Chinese, traditional (zh-Hant)
- [x] Japanese (ja)
- [x] Korean (ko)
- [x] Thai (th)
- [x] Indonesian (id)
- [x] Vietnamese (vi)
- [x] Custom language (custom)
- [ ] More support... (Pull requests welcome)
Requirements
- iOS 12.0+
- Xcode 12.5+
- Swift 5.4+
Installation
Swift Package Manager
⚠️ Needs Xcode 12.0+ to support resources and localization files
dependencies: [
.package(url: "https://github.com/SilenceLove/HXPHPicker.git", .upToNextMajor(from: "1.4.1"))
]
CocoaPods
Add this to Podfile, and then update dependency:
pod 'HXPHPicker'
/// No Kingfisher
pod `HXPHPicker/Lite`
/// Only Picker
pod `HXPHPicker/Picker`
pod `HXPHPicker/Picker/Lite`
/// Only Editor
pod `HXPHPicker/Editor`
pod `HXPHPicker/Editor/Lite`
/// Only Camera
pod `HXPHPicker/Camera`
Carthage
Add the following content to Cartfile
and perform dependency update.
github "SilenceLove/HXPHPicker"
Usage
Prepare
Add these keys to your Info.plist when needed:
Key | Module | Info |
---|---|---|
NSPhotoLibraryUsageDescription | Picker | Allow access to album |
NSPhotoLibraryAddUsageDescription | Picker | Allow to save pictures to album |
PHPhotoLibraryPreventAutomaticLimitedAccessAlert | Picker | Set YES to prevent automatic limited access alert in iOS 14+ (Picker has been adapted with Limited features that can be triggered by the user to enhance the user experience) |
NSCameraUsageDescription | Camera | Allow camera |
NSMicrophoneUsageDescription | Camera | Allow microphone |
Quick Start
import HXPHPicker
class ViewController: UIViewController {
func presentPickerController() {
// Set the configuration consistent with the WeChat theme
let config = PhotoTools.getWXPickerConfig()
// Method 1:
let pickerController = PhotoPickerController(picker: config)
pickerController.pickerDelegate = self
// The array of PhotoAsset objects corresponding to the currently selected asset
pickerController.selectedAssetArray = selectedAssets
// Whether to select the original image
pickerController.isOriginal = isOriginal
present(pickerController, animated: true, completion: nil)
// Method 2:
Photo.picker(
config
) { result, pickerController in
// Select completion callback
// result Select result
// .photoAssets Currently selected data
// .isOriginal Whether the original image is selected
// photoPickerController Corresponding photo selection controller
} cancel: { pickerController in
// Cancelled callback
// photoPickerController Corresponding photo selection controller
}
}
}
extension ViewController: PhotoPickerControllerDelegate {
/// Called after the selection is complete
/// - Parameters:
/// - pickerController: corresponding PhotoPickerController
/// - result: Selected result
/// result.photoAssets Selected asset array
/// result.isOriginal Whether to select the original image
func pickerController(_ pickerController: PhotoPickerController,
didFinishSelection result: PickerResult) {
result.getImage { (image, photoAsset, index) in
if let image = image {
print("success", image)
}else {
print("failed")
}
} completionHandler: { (images) in
print(images)
}
}
/// Called when cancel is clicked
/// - Parameter pickerController: Corresponding PhotoPickerController
func pickerController(didCancel pickerController: PhotoPickerController) {
}
}
Release Notes
Version | Release Date | Xcode | Swift | iOS |
---|---|---|---|---|
v1.4.1 | 2022-05-24 | 13.1.0 | 5.4.2 | 12.0+ |
v1.4.0 | 2022-04-13 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.9 | 2022-03-24 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.7 | 2022-02-19 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.5 | 2022-02-09 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.4 | 2022-01-26 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.3 | 2022-01-19 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.2 | 2022-01-14 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.1 | 2022-01-05 | 13.1.0 | 5.4.2 | 12.0+ |
v1.3.0 | 2021-12-16 | 13.1.0 | 5.4.2 | 12.0+ |
v1.2.9 | 2021-12-02 | 13.1.0 | 5.4.2 | 12.0+ |
v1.2.8 | 2021-11-26 | 12.5.1 | 5.4.2 | 12.0+ |
License
HXPHPicker is released under the MIT license. See LICENSE for details.
🔝