FYPhoto
FYPhoto 是一个使用 Swift 编写的 iOS 照片/视频选择器和浏览器。它功能丰富且可高度自定义,以符合您的 App 需求。
示例
要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install
。
快速尝试:先运行 pod repo update
,然后 pod try FYPhoto
这些功能只需要几行代码即可实现!
显著功能
📷 照片
🎥 视频
✂️ 裁剪
⚡️ 闪光灯
💧 水印
📁 相册
🔢 多选
📏 视频剪辑
还有更多...
要求
iOS 11或更高版本
安装
CocoaPods
使用首先,请确保运行pod repo update
以获取最新版本。
将pod 'FYPhoto'
添加到您的Podfile
中,并运行pod install
。同时,请在Podfile
中添加use_frameworks!
。
target 'MyApp'
pod 'FYPhoto'
use_frameworks!
Swift Package Manager
使用Swift Package Manager (SwiftPM)是一个用于管理Swift代码及C系列依赖分发的工具。从Xcode 11开始,SwiftPM已原生集成至Xcode。
FYPhoto从2.1.0版本开始支持SwiftPM。要使用SwiftPM,您应该使用Xcode 11打开项目。点击文件
-> Swift Packages
-> 添加包依赖
,输入FYPhoto仓库的URL。或者,您也可以使用GitHub账号登录Xcode,只需键入FYPhoto
即可搜索。
选择包后,您可以选择依赖类型(标记版、分支或提交)。然后Xcode将为您设置所有这些项目。
如果您是一个框架作者并且使用FYPhoto作为依赖,请更新您的Package.swift文件。
let package = Package(
dependencies: [
.package(url: "https://github.com/T2Je/FYPhoto.git", from: "2.2.9")
],
// ...
)
配置列表条目
为了让你的应用访问相机和相册,你需要添加以下配置列表条目
- 隐私 - 相机使用说明(照片/视频)
- 隐私 - 照片库使用说明(库)
- 隐私 - 麦克风使用说明(视频)
<key>NSCameraUsageDescription</key>
<string>yourWording</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>yourWording</string>
<key>NSMicrophoneUsageDescription</key>
<string>yourWording</string>
配置
所有配置端点都位于FYPhotoPickerConfiguration。以下是默认值供参考,请随意调整:
选择器
var pickerConfig = FYPhotoPickerConfiguration()
// [Edit configuration here ...]
// Build a picker with your configuration
let photoPicker = PhotoPickerViewController(configuration: pickerConfig)
常规
pickerConfig.selectionLimit = 0
pickerConfig.supportCamera = true
pickerConfig.mediaFilter = [.image, .video]
// Color
let colorConfig = FYColorConfiguration()
colorConfig.topBarColor = FYColorConfiguration.BarColor(itemTintColor: .red,
itemDisableColor: .gray,
itemBackgroundColor: .black,
backgroundColor: .blue)
// Similar setting code for pickerBottomBarColor and browserBottomBarColor
pickerConfig.colorConfiguration = colorConfig
视频
pickerConfig.compressedQuality = .mediumQuality
pickerConfig.maximumVideoMemorySize = 40 // MB
pickerConfig.maximumVideoDuration = 15 // Secs
浏览器
let photoBrowser = PhotoBrowserViewController.create(photos: photos, initialIndex: 0)
let photosBrowser = PhotoBrowserViewController.create(photos: [photo],
initialIndex: 0) {
$0
.buildPageControl()
.buildBottomToolBar()
.buildNavigationBar()
.buildCaption()
.buildThumbnailsForSelection()
.showDeleteButtonForBrowser()
.setMaximumCanBeSelected(1)
}
使用方法
首先,请导入 FYPhoto
。
选择器
let photoPickerVC = PhotoPickerViewController(configuration: pickerConfig)
photoPickerVC.selectedPhotos = { [weak self] images in
// images.forEach {
// $0.asset
// $0.data
// $0.image
// }
}
photoPickerVC.selectedVideo = { [weak self] selectedResult in
switch selectedResult {
case .success(let video):
// video.briefImage
// video.url
case .failure(let error):
print("selected video error: \(error)")
}
}
photoPickerVC.modalPresentationStyle = .fullScreen
self.present(photoPickerVC, animated: true, completion: nil)
浏览器
let image = Photo.photoWithURL(url) // Similar init method for asset, image, data
let photoBrowser = PhotoBrowserViewController.create(photos: [image], initialIndex: 0)
// Use `.fyphoto` to easily bring smoothly drag-drop animation to your app.
self.fyphoto.present(photoBrowser, animated: true, completion: nil)
完成!
语言
🇺🇸英语, 🇨🇳中文。
如果您的语言不受支持,您可以通过提交包含您的 Localizable.strings
文件的 issue 或 pull request 来添加新的语言!
UI 自定义
我们尽力保持最基本的操作,所以这项功能主要通过原生 API 实现。
参考
本项目参考了以下项目
依赖
FYPhoto 依赖于 SDWebImage 来提供异步图像下载功能并支持缓存。
Obj-C 支持
Objective-C不受支持,这不在我们的路线图上。Swift是未来,放弃Obj-C是我们为了保持这个库的速度必须付出的代价 :)
计划
为编辑照片添加更多功能,包括过滤器
、马赛克
等。
许可
FYPhoto采用MIT许可发布。
Swift 版本
Swift 5.4。