FMPhotoPicker 1.3.0

FMPhotoPicker 1.3.0

Cong NguyenCong Nguyen 维护。



  • 作者
  • Cong Nguyen

FMPhotoPicker

MIT licensed Carthage compatible Pod Compatible Build

FMPhotoPicker 是一个现代、简单且无依赖的图片选择器,同时拥有优雅且可定制的图片编辑器。

快速演示

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

功能

  • 支持单选和复选
  • 支持拖拽批量选择/取消选择
  • 支持预览
  • 支持具有滤镜和裁剪功能的简单图片编辑器
  • 支持强制裁剪模式
  • 支持圆形图片预览
  • 支持自定义裁剪
  • 支持自定义滤镜
  • 支持视频播放器
  • 支持自定义确认视图
  • 支持语言本地化

要求

  • iOS 9.0+

安装

SwiftPM

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

Carthage

请在您的Carthfile中插入以下行

git "[email protected]:congnd/FMPhotoPicker.git"

然后运行 carthage update FMPhotoPicker

CocoaPods

FMPhotoPicker 现在在 CocoaPods 中可用
您可以将以下类似内容添加到您的 Podfile 中:pod 'FMPhotoPicker', '~> 1.3.0'

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 开始,您必须将 Privacy - Photo Library Usage Description 添加到您的 Info.plist 文件中。

编辑器

let editor = FMImageEditorViewController(config: config, sourceImage: image)
editor.delegate = self
self.present(editor, animated: true)

委托方法

  • 实现FMPhotoPickerViewControllerDelegate协议以处理选中照片。
func fmPhotoPickerController(_ picker: FMPhotoPickerViewController, didFinishPickingPhotoWith photos: [UIImage])
func fmPhotoPickerController(_ picker: FMPhotoPickerViewController, didFinishPickingPhotoWith assets: [PHAsset])

如果您希望以PHAsset类型而不是UIImage类型接收选中照片,那么请不要忘记将shouldReturnAsset设置为true并实现相应的委托方法。

  • 实现FMImageEditorViewControllerDelegate协议以处理输出图像
func fmImageEditorViewController(_ editor: FMImageEditorViewController, didFinishEdittingPhotoWith photo: UIImage)

配置

该配置支持以下参数

参考

  • mediaTypes
    一个数组,指示选择器控制器可以访问的媒体类型。
    类型:[FMMediaType]
    默认:[.image, .video]

  • selectMode
    照片选择模式,可以是singlemultiple模式。
    类型:FMSelectMode
    默认为multiple

  • maxImage
    可以选中的图像的最大数量。
    类型:Int

  • 默认为10
    maxVideo
    可以选中的视频的最大数量。
    类型:Int

  • 默认为10
    编辑器中使用的过滤选项。将此参数设置为nil,将使过滤菜单在编辑器中不可用。FMPhotoEditor提供了一些默认的过滤效果,这些效果将适合您。
    类型:[FMFilterable]?
    默认值:所有过滤效果均由FMPhotoPicker提供。

  • availableCrops
    编辑器中使用的裁剪选项。将此参数设置为nil,将使裁剪菜单在编辑器中不可用。FMPhotoEditor提供了一些默认的裁剪效果,这些效果将适合您。
    类型:[FMCroppable]? 默认值:所有裁剪效果均由FMPhotoPicker提供。

不允许在不提供至少一个裁剪选项或一个过滤选项的情况下使用编辑器。

  • useCropFirst
    该选项指示是否在FMImageEditorViewController中将裁剪菜单设置为默认选中。
    类型:Bool
    默认值:false

  • alertController
    用于向用户显示带有两种选项(确定或取消)的确认视图的警告控制器。
    类型: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)
}

开发者

@congnd

许可

FMPhotoPicker遵循MIT许可发布。详情请参见LICENSE文件。