FMPhotoPicker 是一个现代、简洁且零依赖的图片选择器,带有一个优雅且可定制的图像编辑器。
批量选择/取消选择 |
平滑过渡 |
滤镜 |
裁剪 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
dependencies: [
.package(url: "https://github.com/congnd/FMPhotoPicker.git", .exact("1.3.0")),
]
在您的 Carthfile 中插入以下行
git "git@github.com:congnd/FMPhotoPicker.git"
然后运行 carthage update FMPhotoPicker
FMPhotoPicker 现在可以在 CocoaPods 中使用
您需要添加类似 `pod 'FMPhotoPicker', '~> 1.3.0'` 这样的内容到您的 Podfile 中
target 'MyApp' do
pod 'FMPhotoPicker', '~> 1.3.0'
end
然后在您的终端中运行 pod install
。
var config = FMPhotoPickerConfig()
有关详细信息,请参阅 配置
let picker = FMPhotoPickerViewController(config: config)
picker.delegate = self
self.present(picker, animated: true)
从 iOS 10 开始,您必须在您的 Info.plist 文件中添加 `Privacy - Photo Library Usage Description`。
let editor = FMImageEditorViewController(config: config, sourceImage: image)
editor.delegate = self
self.present(editor, animated: true)
func fmPhotoPickerController(_ picker: FMPhotoPickerViewController, didFinishPickingPhotoWith photos: [UIImage])
func fmPhotoPickerController(_ picker: FMPhotoPickerViewController, didFinishPickingPhotoWith assets: [PHAsset])
如果您希望接收 PHAsset
类型的选择照片而不是 UIImage
,请不要忘记将 shouldReturnAsset
设置为 true
并实现相应的代理方法。
func fmImageEditorViewController(_ editor: FMImageEditorViewController, didFinishEdittingPhotoWith photo: UIImage)
mediaTypes
selectMode
maxImage
maxVideo
availableFilters
availableCrops
useCropFirst
alertController
shouldReturnAsset
forceCropEnabled
eclipsePreviewEnabled
strings
mediaTypes
一个数组,指示选择器控制器可以访问的媒体类型。
类型: [FMMediaType]
默认值: [.image, .video]
selectMode
照片选择模式,可以是 single
或 multiple
模式。
类型: : FMSelectMode
默认值是 multiple
availableFilters
编辑器中使用的滤镜选项。 将此参数设置为 nil
可使滤镜菜单在编辑器中不可用 FMPhotoEditor 提供了一些默认滤镜,可以满足您的需求。
类型: [FMFilterable]?
默认值: FMPhotoPicker 提供的所有滤镜。
availableCrops
编辑器中使用的裁剪选项。 将此参数设置为 nil
可使裁剪菜单在编辑器中不可用 FMPhotoEditor 提供了一些默认裁剪,可以满足您的需求。
类型: [FMCroppable]?
默认值: FMPhotoPicker 提供的所有裁剪。
如果不至少提供一个裁剪选项或一个滤镜选项,则不允许使用编辑器
useCropFirst
一个选项,指示在 FMImageEditorViewController
中是否默认选择裁剪菜单。
类型: Bool
默认值: false
alertController
一个警报控制器,用于向用户显示带有 2 个选项的确认视图:确定或取消。
类型: FMAlertable
默认值: FMAlert
shouldReturnAsset
您是否希望 FMPhotoPicker 返回 PHAsset 而不是 UIImage。FMPhotoPicker 会根据此配置选择适当的委托方法,以便在用户完成选择时调用 类型: Bool
默认值: false
forceCropEnabled
一个布尔值,指示是否启用强制模式。
如果设置为 true
,则编辑器中仅使用 availableCrops
中的第一个裁剪。
并且该裁剪的比例成为强制裁剪比例。
类型: FMAlertable
默认值: false
eclipsePreviewEnabled
一个布尔值,指示图像的预览是否应以圆形图像显示。
类型: Bool
默认值: false
strings
一个字典,允许您自定义应用程序的语言。
有关详细信息,请参阅 FMPhotoPickerConfig.swift
类型: Dictionary
您可以通过实现 FMFilterable
协议自由创建自己的滤镜。
public protocol FMFilterable {
func filter(image: UIImage) -> UIImage
func filterName() -> String
}
请注意,filterName 用于确定两个滤镜是否相同。
确保您的滤镜名称没有重复,尤其是与您要使用的默认滤镜的名称。
与滤镜功能类似,FMPhotoPicker 提供了通过实现 FMCroppable
协议来使用您自己的裁剪的功能。
public protocol FMCroppable {
func crop(image: UIImage, toRect rect: CGRect) -> UIImage
func name(string: [String: String]) -> String
func icon() -> UIImage
func ratio() -> FMCropRatio?
}
func name(strings: [String: String]) -> String
将接收来自配置对象的字符串配置。它允许您自定义裁剪,同时将所有语言设置保留在一个地方。
name()
方法也用作裁剪的标识符。
因此,请确保您没有任何重复的裁剪名称。
您可以通过实现 FMAlertable
协议为确认视图使用自己的视图样式。
public protocol FMAlertable {
func show(in viewController: UIViewController, ok: @escaping () -> Void, cancel: @escaping () -> Void)
}
在 Twitter 上关注并联系我。如果您发现问题,只需 打开一个 issue。也非常欢迎 pull 请求。
FMPhotoPicker 是在 MIT 许可证下发布的。 有关详细信息,请参阅 LICENSE。