๐Ÿ“ธ Instagram-like image picker & filters for iOS

Overview


ypimagepicker

YPImagePicker

YPImagePicker is an instagram-like photo/video picker for iOS written in pure Swift. It is feature-rich and highly customizable to match your App's requirements.

Language: Swift 5 Version Platform Carthage compatible codebeat badge License: MIT GitHub tag

Installation - Configuration - Usage - Languages - UI Customization

Give it a quick try : pod repo update then pod try YPImagePicker

Those features are available just with a few lines of code!

Notable Features

๐ŸŒ… Library
๐Ÿ“ท Photo
๐ŸŽฅ Video
โœ‚๏ธ Crop
โšก๏ธ Flash
๐Ÿ–ผ Filters
๐Ÿ“ Albums
๐Ÿ”ข Multiple Selection
๐Ÿ“ Video Trimming & Cover selection
๐Ÿ“ Output image size
And many more...

Installation

Experimental Swift Package Manager (SPM) Support

A first version of SPM support is available : package https://github.com/Yummypets/YPImagePicker branch spm.
This has a minimum target iOS version of 12.0.
This is an early release so be sure to thoroughly test the integration and report any issues you'd encounter.

Side note:
Swift package manager is the future and I would strongly recommend you to migrate as soon as possible. Once this integration is stable, the other packager managers will be deprecated.

Using CocoaPods

First be sure to run pod repo update to get the latest version available.

Add pod 'YPImagePicker' to your Podfile and run pod install. Also add use_frameworks! to the Podfile.

target 'MyApp'
pod 'YPImagePicker'
use_frameworks!

Using Carthage

Add github "Yummypets/YPImagePicker" to your Cartfile and run carthage update. If unfamiliar with Carthage then checkout their Getting Started section.

github "Yummypets/YPImagePicker"

Plist entries

In order for your app to access camera and photo libraries, you'll need to ad these plist entries :

  • Privacy - Camera Usage Description (photo/videos)
  • Privacy - Photo Library Usage Description (library)
  • Privacy - Microphone Usage Description (videos)
<key>NSCameraUsageDescription</key>
<string>yourWording</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>yourWording</string>
<key>NSMicrophoneUsageDescription</key>
<string>yourWording</string>

Configuration

All the configuration endpoints are in the YPImagePickerConfiguration struct. Below are the default value for reference, feel free to play around :)

var config = YPImagePickerConfiguration()
// [Edit configuration here ...]
// Build a picker with your configuration
let picker = YPImagePicker(configuration: config)

General

config.isScrollToChangeModesEnabled = true
config.onlySquareImagesFromCamera = true
config.usesFrontCamera = false
config.showsPhotoFilters = true
config.showsVideoTrimmer = true
config.shouldSaveNewPicturesToAlbum = true
config.albumName = "DefaultYPImagePickerAlbumName"
config.startOnScreen = YPPickerScreen.photo
config.screens = [.library, .photo]
config.showsCrop = .none
config.targetImageSize = YPImageSize.original
config.overlayView = UIView()
config.hidesStatusBar = true
config.hidesBottomBar = false
config.hidesCancelButton = false
config.preferredStatusBarStyle = UIStatusBarStyle.default
config.bottomMenuItemSelectedColour = UIColor(r: 38, g: 38, b: 38)
config.bottomMenuItemUnSelectedColour = UIColor(r: 153, g: 153, b: 153)
config.filters = [DefaultYPFilters...]
config.maxCameraZoomFactor = 1.0
config.preSelectItemOnMultipleSelection = true
config.fonts..

Library

config.library.options = nil
config.library.onlySquare = false
config.library.isSquareByDefault = true
config.library.minWidthForItem = nil
config.library.mediaType = YPlibraryMediaType.photo
config.library.defaultMultipleSelection = false
config.library.maxNumberOfItems = 1
config.library.minNumberOfItems = 1
config.library.numberOfItemsInRow = 4
config.library.spacingBetweenItems = 1.0
config.library.skipSelectionsGallery = false
config.library.preselectedItems = nil

Video

config.video.compression = AVAssetExportPresetHighestQuality
config.video.fileType = .mov
config.video.recordingTimeLimit = 60.0
config.video.libraryTimeLimit = 60.0
config.video.minimumTimeLimit = 3.0
config.video.trimmerMaxDuration = 60.0
config.video.trimmerMinDuration = 3.0

Gallery

config.gallery.hidesRemoveButton = false

Default Configuration

// Set the default configuration for all pickers
YPImagePickerConfiguration.shared = config

// And then use the default configuration like so:
let picker = YPImagePicker()

When displaying picker on iPad, picker will support one size only you should set it before displaying it:

let preferredContentSize = CGSize(width: 500, height: 600);
YPImagePickerConfiguration.widthOniPad = preferredContentSize.width;

// Now you can Display the picker with preferred size in dialog, popup etc

Usage

First things first import YPImagePicker.

The picker only has one callback didFinishPicking enabling you to handle all the cases. Let's see some typical use cases ๐Ÿค“

Single Photo

let picker = YPImagePicker()
picker.didFinishPicking { [unowned picker] items, _ in
    if let photo = items.singlePhoto {
        print(photo.fromCamera) // Image source (camera or library)
        print(photo.image) // Final image selected by the user
        print(photo.originalImage) // original image selected by the user, unfiltered
        print(photo.modifiedImage) // Transformed image, can be nil
        print(photo.exifMeta) // Print exif meta data of original image.
    }
    picker.dismiss(animated: true, completion: nil)
}
present(picker, animated: true, completion: nil)

Single video

// Here we configure the picker to only show videos, no photos.
var config = YPImagePickerConfiguration()
config.screens = [.library, .video]
config.library.mediaType = .video

let picker = YPImagePicker(configuration: config)
picker.didFinishPicking { [unowned picker] items, _ in
    if let video = items.singleVideo {
        print(video.fromCamera)
        print(video.thumbnail)
        print(video.url)
    }
    picker.dismiss(animated: true, completion: nil)
}
present(picker, animated: true, completion: nil)

As you can see singlePhoto and singleVideo helpers are here to help you handle single media which are very common, while using the same callback for all your use-cases \o/

Multiple selection

To enable multiple selection make sure to set library.maxNumberOfItems in the configuration like so:

var config = YPImagePickerConfiguration()
config.library.maxNumberOfItems = 3
let picker = YPImagePicker(configuration: config)

Then you can handle multiple selection in the same callback you know and love :

picker.didFinishPicking { [unowned picker] items, cancelled in
    for item in items {
        switch item {
        case .photo(let photo):
            print(photo)
        case .video(let video):
            print(video)
        }
    }
    picker.dismiss(animated: true, completion: nil)
}

Handle Cancel event (if needed)

picker.didFinishPicking { [unowned picker] items, cancelled in
    if cancelled {
        print("Picker was canceled")
    }
    picker.dismiss(animated: true, completion: nil)
}

That's it !

Languages

๐Ÿ‡บ๐Ÿ‡ธ English, ๐Ÿ‡ช๐Ÿ‡ธ Spanish, ๐Ÿ‡ซ๐Ÿ‡ท French ๐Ÿ‡ท๐Ÿ‡บ Russian, ๐Ÿ‡ต๐Ÿ‡ฑ Polish, ๐Ÿ‡ณ๐Ÿ‡ฑ Dutch, ๐Ÿ‡ง๐Ÿ‡ท Brazilian, ๐Ÿ‡น๐Ÿ‡ท Turkish, ๐Ÿ‡ธ๐Ÿ‡พ Arabic, ๐Ÿ‡ฉ๐Ÿ‡ช German, ๐Ÿ‡ฎ๐Ÿ‡น Italian, ๐Ÿ‡ฏ๐Ÿ‡ต Japanese, ๐Ÿ‡จ๐Ÿ‡ณ Chinese, ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian, ๐Ÿ‡ฐ๐Ÿ‡ท Korean, ๐Ÿ‡น๐Ÿ‡ผ Traditional Chinese๏ผˆTaiwan), ๐Ÿ‡ป๐Ÿ‡ณ Vietnamese, ๐Ÿ‡น๐Ÿ‡ญ Thai.

If your language is not supported, you can still customize the wordings via the configuration.wordings api:

config.wordings.libraryTitle = "Gallery"
config.wordings.cameraTitle = "Camera"
config.wordings.next = "OK"

Better yet you can submit an issue or pull request with your Localizable.strings file to add a new language !

UI Customization

We tried to keep things as native as possible, so this is done mostly through native Apis.

Navigation bar color

let coloredImage = UIImage(color: .red)
UINavigationBar.appearance().setBackgroundImage(coloredImage, for: UIBarMetrics.default)
// UIImage+color helper https://stackoverflow.com/questions/26542035/create-uiimage-with-solid-color-in-swift

Navigation bar fonts

let attributes = [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 30, weight: .bold) ]
UINavigationBar.appearance().titleTextAttributes = attributes // Title fonts
UIBarButtonItem.appearance().setTitleTextAttributes(attributes, for: .normal) // Bar Button fonts

Navigation bar Text colors

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.yellow ] // Title color
UINavigationBar.appearance().tintColor = .red // Left. bar buttons
config.colors.tintColor = .green // Right bar buttons (actions)

Original Project & Author

This project has been first inspired by Fusuma Considering the big code, design changes and all the additional features added along the way, this moved form a fork to a standalone separate repo, also for discoverability purposes. Original Fusuma author is ytakz

Core Team

Contributors ๐Ÿ™

ezisazis, hanikeddah, tahaburak, ajkolean, Anarchoschnitzel, Emil, Rafael Damasceno, cenkingunlugu heitara portellaa Romixery shotat

Special thanks to ihtiht for the cool looking logo!

They helped us one way or another ๐Ÿ‘

userdar, Evgeniy, MehdiMahdloo, om-ha, userdar, ChintanWeapp, eddieespinal, viktorgardart, gdelarosa, cwestMobile, Tinyik, Vivekthakur647, tomasbykowski, artemsmikh, theolof, dongdong3344, MHX792, CIronfounderson, Guerrix, Zedd0202, mohammadZ74, SalmanGhumsani, wegweiser6, BilalAkram, KazimAhmad, JustinBeBoy, SashaMeyer, GShushanik, Cez95, Palando, sebastienboulogne, JigneshParekh7165, Deepakepaisa, AndreiBoariu, nathankonrad1, wawilliams003, pngo-hypewell, PawanManjani, devender54321, Didar1994, relaxsus restoflash

Dependency

YPImagePicker relies on prynt/PryntTrimmerView for provide video trimming and cover features. Big thanks to @HHK1 for making this open source :)

Obj-C support

Objective-C is not supported and this is not on our roadmap. Swift is the future and dropping Obj-C is the price to pay to keep our velocity on this library :)

License

YPImagePicker is released under the MIT license.
See LICENSE for details.

Swift Version

  • Swift 3 -> version 1.2.0
  • Swift 4.1 -> version 3.4.1
  • Swift 4.2 -> version 3.5.2 releases/tag/3.4.0)
  • Swift 5.0 -> version 4.0.0
  • Swift 5.1 -> version 4.1.2
  • Swift 5.3 -> version 4.5.0
Comments
  • Photo & Video Quality Drops when selecting from Library

    Photo & Video Quality Drops when selecting from Library

    @userdar "As soon as i choose image from library the quality goes from 100 to 10, why do you think it's happening i'm developing some kind of social media app so image quality is important"

    Bug 
    opened by s4cha 21
  • Design contribution proposal

    Design contribution proposal

    Hi,

    I am a graphic designer. I guess there is not yet a logo of this new and wonderful project. If you need a logo, I can do something. You add me to the list as 3rd Turkish contributor. :)

    opened by ihtiht 18
  • Crop improvements and  toolbar overlapped fix

    Crop improvements and toolbar overlapped fix

    1. Added circle crop type
    2. Added crop overlay color configuration. Previously, the default one was white and barely visible (specially on top of light background photos)
    3. Added grid overlay configuration
    4. Fixed toolbar overlapped by image. Previously, for ratio less than 1 the image was overlapping the toolbar and its buttons

    Note: This is my first experience using Stevia, so I believe there are more convenient ways to layout YPCropView subviews rather than my implementation.

    opened by tsahi-deri 17
  • Pod depends on XCode 10 - swift 4.2

    Pod depends on XCode 10 - swift 4.2

    How can I solve this?

    YPImagePicker was resolved to 3.4.1, which depends on
          SteviaLayout (~> 4.2.0)
    

    With Branch XCode10:

    YPImagePicker (from `https://github.com/Yummypets/YPImagePicker`, branch `Xcode10`) was resolved to 3.4.1, which depends on
          PryntTrimmerView (~> 2.0)
    

    But SteviaLayout 4.2.0 with swift 4.2 not working

    XCode 10 - swift 4.2

    Bug 
    opened by Coppola-Aleandro 17
  • Application is getting crashed when initialise the config file

    Application is getting crashed when initialise the config file

    Hi Team, am using your library in lots of projects, but today I update the library to latest code from Cocoapods but now whenever I initialise the library with new swift 4.0 code. My application is getting crashed at this line. I don't know why it happens

    config.library.mediaType = .photoAndVideo config.library.onlySquare = false config.onlySquareImagesFromCamera = true config.targetImageSize = .original config.usesFrontCamera = true config.showsFilters = true config.filters = [YPFilterDescriptor(name: "Normal", filterName: ""), YPFilterDescriptor(name: "Mono", filterName: "CIPhotoEffectMono")] config.shouldSaveNewPicturesToAlbum = true config.video.compression = AVAssetExportPresetHighestQuality config.albumName = "MyGreatAppName" config.screens = [.library, .photo, .video] config.startOnScreen = .library config.video.recordingTimeLimit = 10 config.video.libraryTimeLimit = 20 config.showsCrop = .rectangle(ratio: (16/9)) config.wordings.libraryTitle = "Gallery" config.hidesStatusBar = false // config.overlayView = myOverlayView config.library.maxNumberOfItems = 5 // config.isScrollToChangeModesEnabled = false

        // Build a picker with your configuration
       let picker = YPImagePicker(configuration: config)
    

    Can you please help me out and Xcode don't show me why the application is getting crashed.

    opened by MandeepSingh1 17
  • Crash while showing picker

    Crash while showing picker

    Describe the bug I configured a photo picker latest version like this:

    let config = YPImagePickerConfiguration()   // not configured
    picker = YPImagePicker(configuration: config)
    picker.didFinishPicking { (items, _) in
      // empty
    }
    

    and later call self.present(self.picker, animated: true, completion: nil), after that app crashed with stack:

    2021-09-23 15:15:37.270287+0300 netto[4154:713451] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIView 0x1583251e0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key assetViewContainer.'
    *** First throw call stack:
    (
    	0   CoreFoundation                      0x00000001803f7978 __exceptionPreprocess + 236
    	1   libobjc.A.dylib                     0x0000000180188800 objc_exception_throw + 56
    	2   CoreFoundation                      0x00000001803f7628 -[NSException init] + 0
    	3   Foundation                          0x0000000180786904 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 312
    	4   UIKitCore                           0x00000001848e4d68 -[UIView(CALayerDelegate) setValue:forKey:] + 180
    	5   UIKitCore                           0x00000001840354d0 -[UIRuntimeOutletConnection connect] + 124
    	6   CoreFoundation                      0x00000001803dfea4 -[NSArray makeObjectsPerformSelector:] + 232
    	7   UIKitCore                           0x0000000184031634 -[UINib instantiateWithOwner:options:] + 1900
    	8   xxxxx                               0x00000001038b7d00 $s13YPImagePicker13YPLibraryViewC03xibD0ACSgyFZ + 268
    	9   xxxxx                               0x00000001038a7c8c $s13YPImagePicker11YPLibraryVCC8loadViewyyF + 48
    	10  xxxxx                               0x00000001038a7d6c $s13YPImagePicker11YPLibraryVCC8loadViewyyFTo + 32
    	11  UIKitCore                           0x0000000183d32ff8 -[UIViewController loadViewIfRequired] + 172
    	12  UIKitCore                           0x0000000183d336b8 -[UIViewController view] + 28
    	13  xxxxx                               0x0000000103880d0c $s13YPImagePicker13YPBottomPagerC6reloadyyF + 760
    	14  xxxxx                               0x000000010387f6e4 $s13YPImagePicker13YPBottomPagerC11controllersSaySo16UIViewControllerCGvW + 48
    	15  xxxxx                               0x000000010387f7f0 $s13YPImagePicker13YPBottomPagerC11controllersSaySo16UIViewControllerCGvs + 136
    	16  xxxxx                               0x00000001038e4c08 $s13YPImagePicker10YPPickerVCC11viewDidLoadyyF + 2844
    	17  xxxxx                               0x00000001038e5468 $s13YPImagePicker10YPPickerVCC11viewDidLoadyyFTo + 32
    	18  UIKitCore                           0x0000000183d2ed5c -[UIViewController _sendViewDidLoadWithAppearanceProxyObjectTaggingEnabled] + 104
    	19  UIKitCore                           0x0000000183d332ec -[UIViewController loadViewIfRequired] + 928
    	20  UIKitCore                           0x0000000183d336b8 -[UIViewController view] + 28
    	21  UIKitCore                           0x0000000183c87074 -[UINavigationController _preferredContentSizeForcingLoad:] + 184
    	22  UIKitCore                           0x0000000183c2a874 -[UIPresentationController preferredContentSizeDidChangeForChildContentContainer:] + 68
    	23  UIKitCore                           0x0000000183c26ad8 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke.466 + 196
    	24  UIKitCore                           0x0000000184887504 -[_UIAfterCACommitBlock run] + 64
    	25  UIKitCore                           0x00000001843feea0 _runAfterCACommitDeferredBlocks + 296
    	26  UIKitCore                           0x00000001843eeffc _cleanUpAfterCAFlushAndRunDeferredBlocks + 200
    	27  UIKitCore                           0x000000018441f14c _afterCACommitHandler + 76
    	28  CoreFoundation                      0x0000000180364fc4 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
    	29  CoreFoundation                      0x000000018035f73c __CFRunLoopDoObservers + 556
    	30  CoreFoundation                      0x000000018035fc9c __CFRunLoopRun + 976
    	31  CoreFoundation                      0x000000018035f3bc CFRunLoopRunSpecific + 572
    	32  GraphicsServices                    0x000000018afdd70c GSEventRunModal + 160
    	33  UIKitCore                           0x00000001843f03d0 -[UIApplication _run] + 964
    	34  UIKitCore                           0x00000001843f51ac UIApplicationMain + 112
    	35  xxxxx                               0x000000010246b7c4 main + 84
    	36  libdyld.dylib                       0x0000000180224554 start + 4
    )
    libc++abi: terminating with uncaught exception of type NSException
    *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIView 0x1583251e0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key assetViewContainer.'
    

    Expected behaviour A clear and concise description of what you expected to happen.

    Environment (please complete the following information):

    • Device: iPhone12 Pro (Simulator / Device)
    • OS: iOS14.5
    • Xcode Version 12.5.1
    • Swift Version 5.5

    Installation Type

    • SPM
    Crash 
    opened by snowtema 16
  • Crash on YPLibraryVC.swift line 471

    Crash on YPLibraryVC.swift line 471

    I have not been able to reproduce this one. Not that common but happens sometimes: 100% iphone devices 100% iOS 14

    Stacktrace:

    Crashed: com.apple.root.user-initiated-qos EXC_BREAKPOINT 0x00000001887d5fb0

    Crashed: com.apple.root.user-initiated-qos 0 libswiftCore.dylib 0x1887d5fb0 assertionFailure(:_:file:line:flags:) + 488 1 YPImagePicker 0x1047b27bc closure #1 in YPLibraryVC.selectedMedia(photoCallback:videoCallback:multipleItemsCallback:) + 471 (YPLibraryVC.swift:471) 2 YPImagePicker 0x1047d7010 thunk for @escaping @callee_guaranteed () -> () + 4404916240 (:4404916240) 3 libdispatch.dylib 0x184a21298 _dispatch_call_block_and_release + 24 4 libdispatch.dylib 0x184a22280 _dispatch_client_callout + 16 5 libdispatch.dylib 0x1849d4254 _dispatch_root_queue_drain + 688 6 libdispatch.dylib 0x1849d48e4 _dispatch_worker_thread2 + 124 7 libsystem_pthread.dylib 0x1cab57568 _pthread_wqthread + 212 8 libsystem_pthread.dylib 0x1cab5a874 start_wqthread + 8

    Often asked Crash 
    opened by majid701 14
  • Error while integrating in Swift UI

    Error while integrating in Swift UI

    Below is an attempt to integrate YPImagePicker into SwiftUI. So when I call YummyViewController inside a VStack in the main body of ContentView I get the error described below

    struct YummyViewController: UIViewControllerRepresentable {
        
        func makeUIViewController(context: UIViewControllerRepresentableContext<YummyViewController>) -> UIViewController {
            let controller = UIViewController()
            
            let config = YPImagePickerConfiguration()
            
            let picker = YPImagePicker(configuration: config)
            picker.didFinishPicking { [unowned picker] items, _ in
                if let photo = items.singlePhoto {
                    print(photo.fromCamera) // Image source (camera or library)
                    print(photo.image) // Final image selected by the user
                    print(photo.originalImage) // original image selected by the user, unfiltered
                    print(photo.modifiedImage ?? "not modified !") // Transformed image, can be nil
                    print(photo.exifMeta ?? "no exif metadata") // Print exif meta data of original image."
                }
                picker.dismiss(animated: true, completion: nil)
            }
            controller.present(picker, animated: true, completion: nil)
            return controller
        }
        
        func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<YummyViewController>) {
        
        }
        
    }
    
    

    CONSOLE MESSAGE

    2020-02-09 13:31:33.748928+0530 MambaLegacy[8305:840740] Warning: Attempt to present <YPImagePicker.YPImagePicker: 0x7fb4f5122a00> on <UIViewController: 0x7fb4f8949ec0> whose view is not in the window hierarchy! Picker deinited ๐Ÿ‘

    opened by TilakMaddy 14
  • Xcode 12 bugs and errors

    Xcode 12 bugs and errors

    Because of a lot of similar issues, i would close everything and collect all info here.

    1. Value of type 'AVCapturePhotoOutput' has no member 'supportedFlashModes'

    SO thread: https://stackoverflow.com/questions/63953256/xcode-12-value-of-type-avcapturephotooutput-has-no-member-supportedflashmode?noredirect=1#comment113092610_63953256 Apple discussion: https://developer.apple.com/forums/thread/86810

    Relate PRs: https://github.com/Yummypets/YPImagePicker/pull/565 https://github.com/Yummypets/YPImagePicker/pull/564

    Related issues: https://github.com/Yummypets/YPImagePicker/issues/563 https://github.com/Yummypets/YPImagePicker/issues/567 https://github.com/Yummypets/YPImagePicker/issues/568

    Temporary workaround: Read https://github.com/Yummypets/YPImagePicker/issues/563

    Bug 
    opened by NikKovIos 13
  • Add auto trim for videos from device library using trimmerMaxDuration

    Add auto trim for videos from device library using trimmerMaxDuration

    This commits adds the request from issue #341.

    This case occurs when the user already has a video selected and enables a multiselection to pick more than one type of media (video or image), so, the trimmer step becomes optional.

    opened by mendesbarreto 13
  • Memory Leak when first using picker

    Memory Leak when first using picker

    I have tested this multiple times and every device possible. Whenever I open my app fresh and grant the device permission to access my photos etc, the first time YP opens it creates a memory leak. Specifically on line 44 - 48, private let loadingContainerView: UIView = { let view = UIView() view.backgroundColor = UIColor(white: 0, alpha: 0.8) return view }()

    I have tried pushing it to the main thread to no avail. Great pod btw.

    Bug 
    opened by Cez95 13
  • Update spinner appearance in YPAlbumVC

    Update spinner appearance in YPAlbumVC

    Just change appearance of YPAlbumVC to adopt the iOS13 new spinner style and a better appearance in dark mode.

    Screenshots | Before | After | |-----|-----| | | |

    opened by Aurazion 0
  • If onlySquare is enabled, execute fitImage on display.

    If onlySquare is enabled, execute fitImage on display.

    #776

    To fix above issue.

    If onlySquare is enabled when displaying an Asset, call fitImage to crop it to a square.

    You can see how it works in the sample apps in the feature/demo branch. https://github.com/hanawat/YPImagePicker/tree/feature/demo

    | Before | After | | ------- | ----- | | ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2022-12-15 21 33 07 | ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2022-12-15 21 33 21 |

    opened by hanawat 0
  • onlySquare does not crop images to square

    onlySquare does not crop images to square

    Describe the bug Enabling onlySquare in YPImagePickerConfiguration (YPConfigLibrary) does not force a square image to be selected.

    To Reproduce Use YPImagePicker as follows: The setting is onlySquare enabled, so the output image size should be square.

    var configuration = YPImagePickerConfiguration()
    configuration.library.onlySquare = true
    let picker = YPImagePicker(configuration: configuration)
    picker.didFinishPicking(completion: { [unowned picker] items, isCancelled in
        defer { picker.dismiss(animated: true) }
        guard !isCancelled else { return }
        items.forEach({ item in
            switch item {
            case .photo(let photo):
                // Image size not cropped to square.
                // image size: (4032.0, 3024.0)
                print("image size:", photo.image.size)
            default:
                break
            }
        })
    })
    present(picker, animated: true)
    

    Expected behavior If onlySquare is enabled in YPImagePickerConfiguration (YPConfigLibrary), the image will be cropped to square.

    Screenshots If the user zooms in on this screen and crops the image to a square, a square image will be created. It is a strange behavior to have a non-square crop on this screen. ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2022-12-15 17 10 25 ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2022-12-15 17 30 17

    Environment (please complete the following information):

    • Device: iPhone14 Pro
    • OS: iOS16.1
    • Xcode Version: 14.1
    • Swift Version 5.3

    Installation Type

    • Cocoapods
    opened by hanawat 1
  • showsCrop doesn't work with multiple selection

    showsCrop doesn't work with multiple selection

    On multiple selection the crop view doesn't show, I'd like to crop all selected images after selection.

    Is there a way to use your crop view to crop the images after selection by myself if showsCrop doesn't support multiple selections?

    Thanks

    opened by tonilopezmr 1
  • Dev

    Dev

    This PR includes 3 changes

    1. show UI for video compression options
    2. remove old video file else its not deleted from temp folder
    3. user default sort descriptor as modificationDate
    opened by niralishaha25 0
Releases(5.2.1)
  • 5.2.1(Jan 8, 2022)

    Thx to me) @NikKovIos

    • Removed hazeRemovalFilter because CIKernel is deprecated in ios 12.
    • Added XRay photo filter to default filters.
    • Removed jpegPhotoDataRepresentation(forJPEGSampleBuffer because it's deprecated.
    • fetchResult: PHFetchResult now accessed via getAsset to prevent crash with index out of range.
    • Deprecated method "AVCaptureDevice.devices(for:" replaced to "AVCaptureDevice.DiscoverySession".

    ๐ŸŸข Also a lot of staff from 5.1.1 release

    Source code(tar.gz)
    Source code(zip)
  • 5.1.1(Jan 6, 2022)

    In this release:

    • Xib files completely removed. Only code UI ๐Ÿ”ฅ
    • Stevia updated for SPM and cocoapods.
    • Fixed crash when tapping flash button with front camera. Thx @AdamBCo
    • Square button is hiding with multiple selection mode.
    • Moved back to Stevia 4.8.0 for SPM and SteviaLayout 4.7.3 for cocoapods. Need it to have a common namespace for Stevia methods to support the both - cocopods and spm.

    Thx:

    • @AlekseyPakAA for https://github.com/Yummypets/YPImagePicker/pull/706
    • @hhariprsd for https://github.com/Yummypets/YPImagePicker/pull/705

    Full Changelog: https://github.com/Yummypets/YPImagePicker/compare/5.0.0...5.1.0

    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Sep 19, 2021)

    Carthage removed completely! ๐Ÿ’€ SPM added! ๐ŸŽ‰โœจ

    Also a lot of changes:

    Minimum supported target is 12.0 now; ๐Ÿค  Removed separate project for Example. Updated swiftlint due to deprecated rule and Pods folder. Added Example target to the root project. Pods now in root project. Added Launch screen. Sorted files in project. Fixed some swiftlint issues.

    Thx to @NikKovIos, @RomanTysiachnik, @sahbazali ๐ŸคŒ

    Source code(tar.gz)
    Source code(zip)
  • 4.5.0(Apr 9, 2021)

    Hello! it's pass a while when we draft a release last time. In this version A LOT of fixes ๐Ÿซ€

    Thanks for everyone who took part in making the library better โค๏ธ

    • Fixed black bar at the bottom when config.onlySquareImagesFromCamera = false
    • Correct compiler error when building with Swift version < 5.3
    • Select multiple photos without selecting the first photo by default. #575
    • Stopping the screen from going to sleep while recording video
    • Fixes for carthage
    • Added feature to limit recording by size
    • Added Norwegian. Thx @tubacase
    • Added Farsi. Thx @sadeghgoo
    • Added Swedish. Thx @Claeysson
    • Added Romanian. Thx @balutaeugen
    • Added Cambodia. Thx @chhaysotheara

    And some else...

    Source code(tar.gz)
    Source code(zip)
  • 4.4.0(Sep 27, 2020)

    Xcode 12 got us quite busy for this release:

    • Xcode 12 Support
    • Fixes #488 with PR #533
    • Fixes #572
    • Fixes supportedFlashModes Apple bug
    • Updates "HHK1/PryntTrimmerView" to "4.0.2"

    Big thanks to @NikKovIos @heitara @arielpollack for this release ๐ŸŽ‰

    Side note

    An experimental SPM support is available on the spm branch. This drastically improves the simplicity of the project & also the release process, which is extremely cumbersome at the moment. Once stable, we will transition to an SPM-only library.

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(12.77 MB)
  • 4.3.1(Aug 6, 2020)

  • 4.3.0(Aug 5, 2020)

    -Adds Portuguese ๐Ÿ‡ต๐Ÿ‡น and Polish ๐Ÿ‡ต๐Ÿ‡ฑ language @tiagomsmagalhaes @NoemiRozpara -Adds support for iPad popovers @krzysiek84 -Hides bottom bar if only one item activated @hamzaozturk -Added label tint to saveButton @fishfisher -Corrects preferredTransform of an asset @turk-jk -Fixes iOS13 video preview issue #391 -Adds font customization via config.fonts @Tripwire999 -Adds customization for the library overlay type via congif.itemOverlayType = .grid / .none @sanderdekoning -Hides cancel button on demand via config.hidesCancelButton -Add auto trim for videos from device library using trimmerMaxDuration (addresses #341) @mendesbarreto -Fixes #507 -Adds config selectionsBackgroundColor @NikKovIos -Fix multiple selection issue #524 @saurabhbajajcode -Users can decide whether the item should be selected according to the indexPath and number of selections. @kf99916 shouldAddToSelection -Adds config.preSelectItemOnMultipleSelection to pre-select the current item in library when using multiple options @peymankh -Builds carthage libs with Xcode 11.6 -Adds Swiftlint linting for better code consistency

    Contributors: @NikKovIos, @xxKRASHxx, @krzysiek84, @tiagomsmagalhaes, @jinthislife, @hamzaozturk, @fishfisher, @turk-jk, @sanderdekoning, @Tripwire999, @pepsin, @kf99916, @peymankh, @saurabhbajajcode , @NoemiRozpara, @mendesbarreto, @xRose1 , @Ludotrico, @heitara

    Massive thanks to all of you, nothing would be possible without you โœจ

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(12.40 MB)
  • 4.2.0(Jan 9, 2020)

    • Fixes an issue where iCloud photos quality would be degraded. #367
    • Fixes an issue where iCloud photos crop would be broken. #410
    • Fixes remove button not working in multiple selection gallery #438
    • Fixes a gap between navigation bar and collection view on iOS13 & "plus" devices #424
    • Fixes Appearance() breaking the colors in the app in which the library is added in some cases #430
    • Adds Vietnamese and Thai languages thanks @kiras0518 !
    • Library UI is now smoother with progressive loading of images.
    • Improves album thumbnail image quality
    • Enables selecting image even if large preview is not loaded.
    • Fixes Library spinner in dark mode
    • Fixes UIBarButtonItem tint color, cancel (top-left corner) buttons should not be tinted

    Massive thanks to : @kiras0518, @uwjimmyxu, @boboxiaodd, @LiborZa, @rodribech20, @TapanRaut, @Mattesackboy, @app-arianamini , @bithavoc, @gaetano78 and whoever participated in the release!๐Ÿพ๐Ÿฅ‚๐ŸŽ‰

    Your help is truly precious ๐Ÿ™ โœจ

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(12.51 MB)
  • 4.1.3(Dec 11, 2019)

    • Supports Dark Mode (Thanks @chrischute)
    • Adds Zoom when taking picture or videos
    • Enables taking non-squared photos & videos and a full screen preview when onlySquareImagesFromCamera is false
    • You can enable removing media items from the edit gallery by setting config.gallery.hidesRemoveButton = false
    • Fixes a bug where crop setting was not taken into account in multiple selection (thanks @XinHaoZhuang)
    • Orientation is now correct even when orientation is locked on the device (now using CMMotionManager
    • Fixes an audio issue when recording mp4 videos thanks @gintechsystems
    • Fixes a permission crash big thanks to @heikorehder !
    • Builds with Xcode 11.2.1.
    • Fixes #176, #320, #279, #347, #306, #414, #397, #401

    Big thanks to:

    @fschaus, @bybash, @5fcgdaeb, @ashwinp-r, @Vollando, @XinHaoZhuang, @jinjinbary, @Emefar, @OlegZhuckovich, murilxaraujo, @jonnyarc, @rodribech20, @bithavoc, @Berk-Kaya, @daveleenew, @victormihaita, @aegzorz, @sedler, @barisozr, @MarkusWu, @hansemannn, @bithavoc, @kevinrenskers

    Special mention to @kf99916 for his outstanding contributions ๐Ÿฅ‡

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(12.50 MB)
  • 4.1.2(Oct 2, 2019)

  • 4.1.1(Oct 1, 2019)

  • 4.0.0(Apr 28, 2019)

    This is the much awaited Swift 5 compatible release ๐Ÿพ ๐Ÿป !

    We also have quite a lot of bug fixes and improvements, courtesy of our amazing contributors ๐Ÿ… :

    • Project broke on new Xcode 10.2 #334
    • Add support for Swift 5.0 #335
    • Problem with Swift 5, problem raising from Stevia fillContainer() #327
    • Fix bug of flashlight button disappearing when flip camera twice #308
    • Select previously selected image when deselecting in multi-selection #311
    • Add configuration of default multiple selection. #312
    • Crash in YPLibrary+LibraryChange.swift #325
    • Separte photo filters and video trimmer configuration. #319
    • After changing the album, the automatically selected image is not selected. #302

    Massive thanks to @snowtema, @pushpsenairekar2911, @halfvim, @slashmo, @kzumu, @Out1and3r, @shopno111, @javiermanzo, @jasudev who have participated in this release, your help is precious ๐Ÿ™

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(9.18 MB)
  • 3.5.3(Jan 2, 2019)

    • Fixes https://github.com/Yummypets/YPImagePicker/issues/252 Multiple selection issue when taking photos with the native camera in the middle of multi-selection. Thanks @taratandel for noticing ๐Ÿ‘Œ
    • Fixes https://github.com/Yummypets/YPImagePicker/pull/287 tap to focus that was broken , kudos to @bithavoc
    • Adds https://github.com/Yummypets/YPImagePicker/pull/253 "cross folder" multiple selection, fixing https://github.com/Yummypets/YPImagePicker/issues/193 Kudos to @mpiechocki for tackling such a big feature :clap: ๐Ÿ”ฅ
    • https://github.com/Yummypets/YPImagePicker/issues/231 Enables hidind the bottom bar, for example when showing a single screen. Kudos @ylin0x81
    • Allow no selection when multi-selecting #249 @mpiechocki again ๐Ÿค–
    • Fixes https://github.com/Yummypets/YPImagePicker/pull/291 Library crop does not work when maxNumberOfItems = 1. Bug found and fixed by @calsmith ๐Ÿ…
    • #295 Setting square to be the default crop option (ala instagram) thanks to @jasudev

    And also, Happy new year ๐ŸŽ‰ ๐Ÿพ !!!!

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(9.54 MB)
  • 3.5.2(Oct 9, 2018)

    • Removes old deprecated callbacks with warnings as described in #240 by @5fcgdaeb
    • Adds Korean courtesy of @trilliwon ๐Ÿ‡ฐ๐Ÿ‡ท
    • Fixes "Umbrella header PrynTrimmerView.h not found" #242 @ylin0x81
    • Fixed a memory leak in YPImagePicker #238 @ylin0x81
    • Fixes library crop button needing 2 taps to work the first time #243

    Special mention for @ylin0x81 for his work on this release ๐Ÿ‘

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(9.39 MB)
  • 3.5.1(Oct 1, 2018)

  • 3.5.0(Sep 25, 2018)

  • 3.4.1(Sep 17, 2018)

    • Added to config: preferredStatusBarStyle, bottomMenuItemUnSelectedColour, bottomMenuItemSelectedColour, PHFetchOptions
    • Added PHAsset to YPMediaPhoto
    • Introduces minWidthForItem to enable the restriction for the max height of the asset, like in instagramm! ๐Ÿš€
    • Totally rebuilded filters! Now they work smoothly.๐Ÿ”ฅ
    • The gallery now work better with touches and panning - not moving up every time.๐Ÿ‘๐Ÿป Also some changes that fixes diff problems:
    • Preventing of selecting the same asset in lib. Fix with wrong zooming in lib.
    • Fix for #177 with mov only captured video.
    • Fixed the #190 bug with crash in video capture.
    • Fix for video without audio track.
    • Important - added a cancelling of proccessing the video.
    • Fix for #137 with not cropped video recording.

    Some UI improvements.

    Source code(tar.gz)
    Source code(zip)
  • 3.4.0(Jul 20, 2018)

    • Use weak over unowned to fix crashes, kudos to @jonasecandersson ๐Ÿ‘ fixes #178
    • Use correct video Orientation even when phone is "orientation locked" Thanks to @Appswage fixes #161
    • Introduces numberOfItemsInRow & spacingBetweenItems to customize library layout, courtesy of @shotat ๐Ÿš€
    • Fixes Library being stuck with a small number of items, due to the collectionView alwaysBounceVertical defaulting to false. Kudos to @shotat again ๐Ÿ”ฅ
    • Adds ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian language thanks to @wsnjy ๐Ÿ™
    • Improves UI on Gallery with multiple items, adds natural paging + touch animations. fixes #135

    Thank you so much for your great work on this release, you are the BEST! <3

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(8.12 MB)
  • 3.3.1(Jun 28, 2018)

  • 3.3.0(Jun 25, 2018)

    • Adds chinese language (courtesy of @chquanquan)
    • Now asks for related permissions only when the corresponding screen is shown (@DamascenoRafael)
    • Introduces minNumberOfItems to force a user to select at least X photos/videos. (based on @cwestMobile idea)
    • Fixes crash showing filters when config.filters = [] (thanks @barisozr for spotting)
    • Fixes warning Unable to load image data, /var/mobile/Media/DCIM/101APPLE/XXXX.JPG
    • Fixes "Live photo shots were not saved to album without filters" (fixed by @Appswage)
    • Fixes "Live videos not taking orientation into account" (fixed by @Appswage)

    ๐ŸŽ‰

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(7.90 MB)
  • 3.2.0(Jun 14, 2018)

    Small bug fixes

    • Fixes right bar button indicator when getting back to selections gallery
    • Fixes didFinishPicking called twice when when skipSelectionsGallery = true , maxNumberOfItems > 1 (kudos to @boboxiaodd)
    • Fixes video compression not taken into account when taking video from the cameraView. props to @lewisloofis ๐Ÿป
    • Fixes targetImageSize new api migration (kudos @Ewg777 ๐Ÿ‘ )
    • Fixes Italian typo (thanks @pcecchetti ๐Ÿ )
    • Example project:
      • No longer requires Carthage to run
      • Works with photo + videos out of the box
      • Adds video player

    PS: Big thanks to @ihtiht for our new cool looking logo ๐ŸŽ‰ !

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(7.87 MB)
  • 3.1.1(May 31, 2018)

  • 3.1.0(May 29, 2018)

    Skippable Gallery

    Gallery Selection is now skippable, courtesy of @shotat

    config.library.skipSelectionsGallery = true
    

    TargetSize for camera capture

    libraryTargetImageSize becomes targetImageSize in order to limit the outut image size for both library & Capture, courtesy of @DamascenoRafael

    config.targetImageSize = .cappedTo(size: 1024)
    

    EXIFs

    You can now access Exif Metadata thanks to @Romixery :clap:

    photo.exifMeta
    

    Japanese ๐Ÿ‡ฏ๐Ÿ‡ต

    Adds Japanese language thanks to @shotat ! ๐Ÿ’ช

    Namespaced Config

    Config is now namespaced for a clearer usage. config.videoRecordingTimeLimit becomes config.video.recordingTimeLimit

    Fixes dismissal issue

    Fixes a bug where Picker dismissal couldn't be animated: false Let's remind that dismissal is the user's responsibility so don't forget to call dismiss in the didFinishPicking callback. Thanks @WeDrinkInAssembly for spotting that ๐Ÿ‘€

    Thanks a ton to the usual suspects who helped with the translation @shotat, @DamascenoRafael, @hanikeddah, @tahaburak, @Anarchoschnitzel ๐Ÿ‘

    Have fun!

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(7.91 MB)
  • 3.0.0(May 17, 2018)

    Today is a big day! ๐ŸŽ‰

    We worked pretty hard with @NikKovIos since March on supporting multiple selection. This was quite a big feature actually (bigger than I expected to be honest) so we'd like to thank you all for your patience. We know this was a much awaited one !

    Today's menu

    • New Api for multiple selection https://github.com/Yummypets/YPImagePicker/issues/114, https://github.com/Yummypets/YPImagePicker/issues/54 https://github.com/Yummypets/YPImagePicker/issues/103
    • Video Trimming/ Choosing cover (Big thanks to @HHK1, courtesy of https://github.com/prynt/PryntTrimmerView)
    • Tap Preview in Filter screens (touch the photo to see the unfiltered version)
    • Support for Video only (Kudos to @portellaa ๐Ÿ‘ ) https://github.com/Yummypets/YPImagePicker/issues/110 https://github.com/Yummypets/YPImagePicker/issues/88
    • A nice progress bar while loading long videos
    • The ability to know the media source, library or shot
    • The ability to access the original image, unfiltered https://github.com/Yummypets/YPImagePicker/issues/42
    • Italian Translation ๐Ÿ• (Thanks @Viktormax !)
    • German Translation (Thanks @Anarchoschnitzel !)
    • Arabic Translation (Thanks @hanikeddah !)

    โš ๏ธ Pre-release

    These are some pretty big changes, so we decided to make this a pre-release. For the ones kind enough to try this release please report any bug you find on the way :)

    ๐Ÿ™ Thank You

    Lastly I'd like to personally thank @NikKovIos for his hardwork on this release, this wouldn't have been possible without his dedication ! Truly great to work with you buddy :)

    @sakthinath @chintanMaisuriya @PawanManjani @relaxsus @Didar1994 @devender54321 @goribchat @SashaMeyer @praveen4D2 @cwestMobile @HHK1 @abdulkrm @DullBottle @portellaa @Viktormax

    The readme has been updated with the new api, have fun!

    Source code(tar.gz)
    Source code(zip)
    YPImagePicker.framework.zip(7.74 MB)
  • 2.8.1(Apr 3, 2018)

  • 2.8.0(Apr 2, 2018)

  • 2.7.3(Mar 18, 2018)

  • 2.7.2(Mar 12, 2018)

  • 2.7.1(Feb 27, 2018)

Owner
Yummypets
Where pet lovers share their passion ๐Ÿถ๐Ÿฑ๐Ÿฐ
Yummypets
FlaneurImagePicker is an iOS image picker that allows users to pick images from different sources (ex: user's library, user's camera, Instagram...). It's highly customizable.

FlaneurImagePicker is a highly customizable iOS image picker that allows users to pick images from different sources (ex: device's library, device's c

FlaneurApp 17 Feb 2, 2020
Jogendra 113 Nov 28, 2022
Syntactic Sugar for Accelerate/vImage and Core Image Filters

ShinpuruImage Syntactic Sugar for Accelerate/vImage and Core Image Filters ShinpuruImage offers developers a consistent and strongly typed interface t

simon gladman 100 Jan 6, 2023
Simple image filters

Demo-Image-Filters Simple image filters Apply filters on images demo, Coded in swift language with below functionalities: Select image from phone gall

Jacky Patel 3 Dec 1, 2021
The collection of image filters with swift

SemanticImage The collection of image filters. How to use Setting Up 1, Add Sema

MLBoy 60 Dec 29, 2022
Image filtering UI library like Instagram.

Sharaku Usage How to present SHViewController let imageToBeFiltered = UIImage(named: "targetImage") let vc = SHViewController(image: imageToBeFiltered

Makoto Mori 1.5k Dec 20, 2022
๐Ÿ“ธ iMessage-like, Image Picker Controller Provides custom features.

RAImagePicker Description RAImagePicker is a protocol-oriented framework that provides custom features from the built-in Image Picker Edit. Overview O

Rashed Al-Lahaseh 14 Aug 18, 2022
Instant camera hybrid with multiple effects and filters written in Swift.

Kontax Cam Download on the app store! No longer on the app store Kontax Cam is an instant camera built 100% using Swift for iOS. You can take your pho

Kevin Laminto 108 Dec 27, 2022
Image picker with custom crop rect for iOS written in Swift (Ported over from GKImagePicker)

WDImagePicker Ever wanted a custom crop area for the UIImagePickerController? Now you can have it with WDImagePicker. Just set your custom crop area a

Wu Di 96 Dec 19, 2022
A very useful and unique iOS library to open image picker in just few lines of code.

ImagePickerEasy A very simple solution to implement UIImagePickerController() in your application. Requirements Swift 4.2 and above Installation Image

wajeehulhassan 6 May 13, 2022
๐Ÿ“ท multiple phassets picker for iOS lib. like a facebook

Written in Swift 5.0 TLPhotoPicker enables application to pick images and videos from multiple smart album in iOS, similar to the current facebook app

junhyi park 1.8k Jan 2, 2023
FMPhotoPicker is a modern, simple and zero-dependency photo picker with an elegant and customizable image editor

FMPhotoPicker is a modern, simple and zero-dependency photo picker with an elegant and customizable image editor Quick demo Batch select/deselect Smoo

Cong Nguyen 648 Dec 27, 2022
๐Ÿ“น Your next favorite image and video picker

Description We all love image pickers, don't we? You may already know of ImagePicker, the all in one solution for capturing pictures and selecting ima

HyperRedink 1.4k Dec 25, 2022
FLImagePicker - A simple image picker supported multiple selection

FLImagePicker A simple image picker supported multiple selection. Features Multiple selection Gesture supported Dark mode Easy modification Installati

Allen Lee 4 Aug 17, 2022
A Shortcuts-like and highly customizable SFSymbol picker written in Swift.

SFTintedIconPicker SFTintedIconPicker is a Shortcuts-like and highly customizable SFSymbol picker written in Swift. Features Native Appearance Search

StephenFang 2 Aug 16, 2022
An image download extension of the image view written in Swift for iOS, tvOS and macOS.

Moa, an image downloader written in Swift for iOS, tvOS and macOS Moa is an image download library written in Swift. It allows to download and show an

Evgenii Neumerzhitckii 330 Sep 9, 2022
AsyncImage before iOS 15. Lightweight, pure SwiftUI Image view, that displays an image downloaded from URL, with auxiliary views and local cache.

URLImage URLImage is a SwiftUI view that displays an image downloaded from provided URL. URLImage manages downloading remote image and caching it loca

Dmytro Anokhin 1k Jan 4, 2023
Twitter Image Pipeline is a robust and performant image loading and caching framework for iOS clients

Twitter Image Pipeline (a.k.a. TIP) Background The Twitter Image Pipeline is a streamlined framework for fetching and storing images in an application

Twitter 1.8k Dec 17, 2022
Image-cropper - Image cropper for iOS

Image-cropper Example To run the example project, clone the repo, and run pod in

Song Vuthy 0 Jan 6, 2022