FMPhotoPicker

MIT licensed Carthage compatible Pod Compatible Build

FMPhotoPicker 是一个现代、简洁且零依赖的图片选择器,带有一个优雅且可定制的图像编辑器。

快速演示

批量选择/取消选择
平滑过渡
滤镜
裁剪
FMPhotoPicker FMPhotoPicker FMPhotoPicker FMPhotoPicker

特性

要求

安装

SwiftPM

dependencies: [
  .package(url: "https://github.com/congnd/FMPhotoPicker.git", .exact("1.3.0")),
]

Carthage

在您的 Carthfile 中插入以下行

git "git@github.com:congnd/FMPhotoPicker.git"

然后运行 carthage update FMPhotoPicker

CocoaPods

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)

配置

配置支持以下参数

参考

如果不至少提供一个裁剪选项或一个滤镜选项,则不允许使用编辑器

自定义

自定义滤镜

您可以通过实现 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。