SwiftUI package after the album when the user's cell phone album storage of photos and videos to reach a certain number and (for example, more than 150G, 20,000 photos and videos or so), LazyVGrid will fall into an arithmetic difficult situation, the CPU occupancy remains high, and temporarily did not find a good way to optimize, so it is packaged again with UIKit, to see the actual needs of the discretionary use 。SwiftUI Demo
Optional albums, preview editable Gif Video Image Live Photo, transparent images with adjustable background color for easy editing
Open the custom album
Button {
isPresentedGallery.toggle()
} label: {
Text("打开自定义相册UIKit")
.foregroundColor(Color.red)
.frame(height: 50)
}
.galleryPicker(isPresented: $isPresentedGallery,
maxSelectionCount: 9,
selectTitle: "Videos",
autoCrop: true,
cropRatio: .init(width: 1, height: 1),
onlyImage: false,
selected: $selectItem.pictures)
Open the system album
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
}
}
}
Access to photo video editing tools
.editPicker(isPresented: $isPresentedCrop,
cropRatio: .init(width: 10, height: 1),
asset: selectItem.selectedAsset) { asset in
selectItem.pictures.replaceSubrange(selectItem.selectedIndex...selectItem.selectedIndex, with: [asset])
}
Select File > Swift Packages > Add Pacakage Dependency
in Xcode's menu bar, and enter in the search bar
https://github.com/jackiehu/PhotoPickerKit
, you can complete the integration
PhotoPicker_SwiftUI also supports manual Install, just drag the PhotoPicker_SwiftUI folder in the Sources folder into the project that needs to be installed
hu,
PhotoPicker_SwiftUI is available under the MIT license. See the LICENSE file for more info.