Skip to content

zjinhu/PhotoPicker_SwiftUI

Repository files navigation

PhotoPicker_SwiftUI

SPM Xcode 14.0+ iOS 14.0+ Swift 5.0+ SwiftUI 3.0+

例子

SwiftUI封装完相册后当用户手机内相册存储的照片视频达到一定的数量及(例如150G以上,两万张照片视频左右),LazyVGrid就会陷入一个运算艰难的境地,CPU占用居高不下,暂时没找到很好的优化办法,所以就用UIKit又封装了一遍,看实际需求酌情使用,UIKit封装地址Demo.

可选相册,可预览编辑Gif Video Image Live Photo,透明图片可调整背景色方便编辑

打开使用SwiftUI封装的相册

                Button {
                    isPresentedGallery.toggle()
                } label: {
                    Text("打开自定义相册SwiftUI")
                        .foregroundColor(Color.red)
                        .frame(height: 50)
                }
                .galleryPicker(isPresented: $isPresentedGallery,
                               maxSelectionCount: 7,
                               selectTitle: "Videos",
                               autoCrop: true,
                               cropRatio: .init(width: 1, height: 1),
                               onlyImage: false,
                               selected: $selectItem.pictures)

打开系统相册

                Button {
                    showPicker.toggle()
                } label: {
                    Text("打开系统相册")
                }
                .photoPicker(isPresented: $showPicker,
                             selected: $selectedItems,
                             maxSelectionCount: 5,
                             matching: .any(of: [.images, .livePhotos, .videos]))
                .onChange(of: selectedItems) { newItems in
                    var images = [UIImage]()
                    Task{
                        for item in newItems{
                            if let image = try await item.loadTransfer(type: UIImage.self){
                                images.append(image)
                            }
                        }
                        await MainActor.run {
                            selectedImages = images
                        }
                    }
                }

进入照片视频编辑工具

        .editPicker(isPresented: $isPresentedCrop,
                    cropRatio: .init(width: 10, height: 1),
                    asset: selectItem.selectedAsset) { asset in
            selectItem.pictures.replaceSubrange(selectItem.selectedIndex...selectItem.selectedIndex, with: [asset])
        }

用法

安装

在 Xcode 的菜单栏中选择 File > Swift Packages > Add Pacakage Dependency,然后在搜索栏输入

https://github.com/jackiehu/PhotoPicker_SwiftUI

手动集成

PhotoPicker_SwiftUI 也支持手动集成,只需把Sources文件夹中的PhotoPicker_SwiftUI文件夹拖进需要集成的项目即可

作者

hu,

更多砖块工具加速APP开发

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

许可

PhotoPicker_SwiftUI is available under the MIT license. See the LICENSE file for more info.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages