A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.

Overview

Compatible with all Platforms

EFQRCode is a lightweight, pure-Swift library for generating stylized QRCode images with watermark or icon, and for recognizing QRCode from images, inspired by qrcode. Based on CoreGraphics, CoreImage, and ImageIO, EFQRCode provides you a better way to handle QRCode in your app, no matter if it is on iOS, macOS, watchOS, and/or tvOS. You can integrate EFQRCode through CocoaPods, Carthage, and/or Swift Package Manager.

中文介绍

Examples

Demo Projects

TestFlight

You can click the TestFlight button below to download demo with TestFlight:

App Store

You can click the App Store button below to download demo, support iOS, tvOS and watchOS:

You can also click the Mac App Store button below to download demo for macOS:

Compile Demo Manually

To run the example project manually, clone the repo, demos are in the 'Examples' folder, remember run command sh Startup.sh in terminal to get all dependencies first, then open EFQRCode.xcworkspace with Xcode and select the target you want, run.

Or you can run the following command in terminal:

git clone [email protected]:EFPrefix/EFQRCode.git; cd EFQRCode; sh Startup.sh; open 'EFQRCode.xcworkspace'

Requirements

Version Needs
1.x Xcode 8.0+
Swift 3.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+
4.x Xcode 9.0+
Swift 4.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+
5.x Xcode 11.1+
Swift 5.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+
6.x Xcode 12.0+
Swift 5.1+
iOS 9.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+

Installation

CocoaPods

EFQRCode is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'EFQRCode', '~> 6.1.0'

Then, run the following command:

$ pod install

Carthage

IMPORTANT: this workaround is necessary for Carthage to somewhat work in Xcode 12.

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate EFQRCode into your Xcode project using Carthage, specify it in your Cartfile:

github "EFPrefix/EFQRCode" ~> 6.1.0

Run carthage update to build the framework and drag the built EFQRCode.framework into your Xcode project.

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the Swift compiler.

Once you have your Swift package set up, adding EFQRCode as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/EFPrefix/EFQRCode.git", .upToNextMinor(from: "6.1.0"))
]

Quick Start

1. Import EFQRCode

Import EFQRCode module where you want to use it:

import EFQRCode

2. Recognition

A String Array is returned as there might be several QR Codes in a single CGImage:

if let testImage = UIImage(named: "test.png")?.cgImage {
    let codes = EFQRCode.recognize(testImage)
    if !codes.isEmpty {
        print("There are \(codes.count) codes")
        for (index, code) in codes.enumerated() {
            print("The content of QR Code \(index) is \(code).")
        }
    } else {
        print("There is no QR Codes in testImage.")
    }
}

3. Generation

Create QR Code image, basic usage:

Parameter Description
content REQUIRED, content of QR Code
size Width and height of image
backgroundColor Background color of QRCode
foregroundColor Foreground color of QRCode
watermark Background image of QRCode
if let image = EFQRCode.generate(
    for: "https://github.com/EFPrefix/EFQRCode",
    watermark: UIImage(named: "WWF")?.cgImage
) {
    print("Create QRCode image success \(image)")
} else {
    print("Create QRCode image failed!")
}

Result:

4. Generation from GIF

Use EFQRCode.generateGIF to create GIF QRCode.

Parameter Description
generator REQUIRED, an EFQRCodeGenerator instance with other settings
data REQUIRED, encoded input GIF
delay Output QRCode GIF delay, emitted means no change
loopCount Times looped in GIF, emitted means no change
if let qrCodeData = EFQRCode.generateGIF(
    using: generator, withWatermarkGIF: data
) {
    print("Create QRCode image success.")
} else {
    print("Create QRCode image failed!")
}

You can get more information from the demo, result will like this:

5. Next

Learn more from User Guide.

Recommendations

  1. Please select a high contrast foreground and background color combinations;
  2. To improve the definition of QRCode images, increase size, or scale up using magnification (instead);
  3. Magnification too high/size too large/contents too long may cause failure;
  4. It is recommended to test the QRCode image before put it into use;
  5. You can contact me if there is any problem, both Issue and Pull request are welcome.

PS of PS: I wish you can click the Star button if this tool is useful for you, thanks, QAQ...

Other Platforms/Languages

Platforms/Languages Link
Objective-C https://github.com/z624821876/YSQRCode
Java https://github.com/SumiMakito/AwesomeQRCode
JavaScript https://github.com/SumiMakito/Awesome-qr.js
Kotlin https://github.com/SumiMakito/AwesomeQRCode-Kotlin
Python https://github.com/sylnsfar/qrcode

Contributors

This project exists thanks to all the people who contribute. [Contribute]

PS: We use QRCodeSwift to generate QR code on watchOS, thanks to ApolloZhu.

Donations

If you think this project has brought you help, you can buy me a cup of coffee. If you like this project and are willing to provide further support for it's development, you can choose to become Backer or Sponsor in Open Collective.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Thanks for your support, 🙏

Thanks

Awards

Apps using EFQRCode

Other

Part of the pictures in the demo project and guide come from the internet. If there is any infringement of your legitimate rights and interests, please contact us to delete.

Contact

Email: [email protected]

License

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

Comments
  • CIFilter(name:

    CIFilter(name: "CIQRCodeGenerator") 方法崩溃

    您好:我在使用EFQRCode时,在真机器iPhone X以上机型中:CIFilter(name: "CIQRCodeGenerator") 方法会崩溃,在真机器iPhone X以下,及iPhone 8 等,系统版本均为iOS13.1.3最新的,方法会无缘无故崩溃掉.请帮忙分析以下.谢谢

    wontfix 
    opened by 472125266 14
  • Carthage installation problem

    Carthage installation problem

    Check List

    Thanks for considering to open an issue. Before you submit your issue, please confirm these boxes are checked.

    • [ X] I have read the README.md, but there is no information I need.
    • [ X] I have searched in existing issues, but did find a same one.

    Issue Description

    Description

    Since version 5, the library cannot be installed using Carthage. Searching for the returned error on the internet, I got many results back but all solutions don't work. This is the returned error:

    A shell task (/usr/bin/env git checkout --quiet 122809d12f0a3ed8323d2e6b3ddc7ec107a6afc9 (launched in /Users/project/Carthage/Checkouts/EFQRCode/Examples/3rd/SnapKit)) failed with exit code 128: fatal: reference is not a tree: 122809d12f0a3ed8323d2e6b3ddc7ec107a6afc9

    Reproduce

    Add this to the Cartfile and run carthage update:

    github "EFPrefix/EFQRCode"

    Pinning a version also doesn't work. The only thing that works for me is using version 4 from your personal github account:

    github "EyreFree/EFQRCode" ~> 4.3.0

    Other Comment

    Tested on multiple devices, same result.

    Thanks for this great library!

    opened by abdulhaq-e 5
  • iOS 12 impossible to generate QR code.

    iOS 12 impossible to generate QR code.

    I am using this lib to generate qr codes. But for iOS 12 it always fails to generate qr code.

    After some investigation i found out that in iOS 12 filter CIFilter(name: "CIQRCodeGenerator") always return nil.

    opened by OlegGordiichuk 5
  • EFUIntPixel init?(color: CGColor)  always return nil

    EFUIntPixel init?(color: CGColor) always return nil

    Hi, In EFUIntPixelr.swift Line 66, it will always return nil when init by CGColor. Thus, function CGImage.binarization() will not be called. It's weird to see this useless function and initializer.

    bug 
    opened by vin-zhou 5
  • Support generating barcode type CICode128BarcodeGenerator

    Support generating barcode type CICode128BarcodeGenerator

    Is it possible to generate CICode128BarcodeGenerator on watchOS? CIFilter is not available and I don't want to create barcode on the iPhone and send it later to watch. Is it possible with EFQRCode?

    opened by zalewskise 4
  • generate can't be read by some qrcode reader(quickMark)

    generate can't be read by some qrcode reader(quickMark)

    as title

    code:

            if   let tryCGImage = EFQRCode.generate(
                content: "FCYKrciaHgodSKn3baKuPzas0k2PQJjI",
                size: EFIntSize(width: 240, height: 240)
                ) {
                let image = UIImage(cgImage: tryCGImage)
                qrcodeImageView?.image = image
                qrcodeImageView?.contentMode = .center
            }
    

    screen shot 2017-06-08 at 14 10 56

    opened by tentenlee100 4
  • V6 API Migration

    V6 API Migration

    See V6 API Announcement for details

    • [x] Migrate Playgrounds
    • [x] Migrate watchOS tests
    • [x] Migrate other XCTests
    • [x] Migrate demo projects
    • [ ] Produce migration guide
    • [x] Migration demo videos
    example 
    opened by ApolloZhu 3
  • [Breaking Changes] New v6 API for Swift and ObjC

    [Breaking Changes] New v6 API for Swift and ObjC

    See V6 API Announcement for details

    • Enable chaining methods for builder pattern
      • Mostly automatically migrate-able:
        • Use control + option + command + F to apply all fix-its in scope
        • Need to manually update EFQRCodeMode.none to EFQRCodeMode?.none, i.e. nil
        • Need to manually update recognition code to handle empty array instead of handling optional and/or empty array
      • Variables are now public for old, non-chaining behavior
        • Use EFQRCodeGenerator.with<T>(_: ReferenceWritableKeyPath<Self, T>, _: T) -> Self to set property directly and chain invocations
      • Old APIs (EFQRCode+Migration-v6.swift) are deprecated, and should be marked as obsoleted/unavailable with v7 release, and the file completely deleted with v8 release.
    • Objective-C Support (closes #92)
      • EFQRCodeGenerator, EFQRCodeRecognizer are now equally available in Swift/ObjC, and EFQRCode will be Swift only
      • Added unit tests to ensure API availability
    • EFUIntPixel appears to be not an active part of the existing public API, so it will no longer be
      • Note: this will most likely resurface in v7?
    • Officially drop pathToSave from GIF generation API
    opened by ApolloZhu 3
  • Carthage update failure

    Carthage update failure

    Hi, I'm trying to install the framework via Carthage but i'm receiving the following error:

    error: compiling for watchOS 2.0, but module 'swift_qrcodejs' has a minimum deployment target of watchOS 6.1:

    my cartfile: github "EFPrefix/EFQRCode" ~> 5.1.6

    Command I'm using Carthage update EFQRCode --platform watchOS

    bug help wanted wontfix 
    opened by rafabertholdo 3
  • In Xcode 12.2 using swift package with library 6.0.0, compiler issues warning

    In Xcode 12.2 using swift package with library 6.0.0, compiler issues warning

    Issue Description

    After adding EFQRCode using Xcode 12.2 swift packages, the package manager reports a warning for 2 files. The two plist files are not handled.

    Showing All Messages found 2 file(s) which are unhandled; explicitly declare them as resources or exclude from the target .../EFQRCode/Source/info-tvos.plist .../EFQRCode/Source/info.plist

    Description

    The warning is produced during the Resolve Package Graph step.

    Reproduce

    In any project, running inside Xcode 12.2, File->Swift Packages->Add Package Dependency enter EFPrefix/EFQRCode with a version of 6.0.0 Compile the project for the warning. It will occur before the compilation of the project starts.

    enhancement 
    opened by Dlemex 2
  • No such module 'EFQRCode' for watchOS target through SPM

    No such module 'EFQRCode' for watchOS target through SPM

    Check List

    Thanks for considering to open an issue. Before you submit your issue, please confirm these boxes are checked.

    • [x] I have read the README.md, but there is no information I need.
    • [x] I have searched in existing issues, but did find a same one.

    Issue Description

    I just followed the Readme instruction and installed through SwiftPM, but when I try to use it with

    import EFQRCode

    I get that error

    No such module 'EFQRCode'

    I'm trying to use it on a WatchOS only app.

    opened by jlubeck 2
  • 生成二维码时,选择相册里的gif图作为水印图片,不能生成gif图片

    生成二维码时,选择相册里的gif图作为水印图片,不能生成gif图片

    检查清单

    • [x] 我已阅读 README.md,但没找到我需要的信息。
    • [x] 我已查看 已知的问题,但没有相似的提问/请求。

    问题描述

    选择相册里的gif图作为水印图片,EFImage为normal成了普通照片

    展开讲讲

    在从相册里选择照片的didFinishPickingMediaWithInfo回调方法里, if let imageUrl = info[.referenceURL] as? URL, let asset = PHAsset.fetchAssets(withALAssetURLs: [imageUrl], options: nil).lastObject { images = selectedAlbumPhotosIncludingGifWithPHAssets(assets: [asset]) } asset为nil,images的count为0,导致不走底下的方法 if let tryGIF = images.first(where: { $0.value?.isGIF == true }) { watermark = tryGIF.value! }

    重现步骤

    xcode14.1 ios16.1.1 Swift5 EFQRCode6.2.1

    其他信息

    WeChat3fc0444585c6453b5b4746141b52b33c

    opened by tc976562936 0
  • Question about QRCodeRecognize

    Question about QRCodeRecognize

    你好,最近在做识别二维码的功能,看到EFQRCode识别这块的逻辑有2个疑问.

    为什么 CIDetectorAccuracyLow 低精度的识别要放到高精度的后面呢,我理解低精度的速度较快,高精度应该做兜底.

    另外一个疑问是 取得图片的灰度这块是必须的吗

    private func getQRString() -> [String] {
        let result = image.ciImage().recognizeQRCode(
            options: [CIDetectorAccuracy: CIDetectorAccuracyHigh]
        )
        if result.isEmpty, let grayscaleImage = image.grayscale {
            return grayscaleImage.ciImage().recognizeQRCode(
                options: [CIDetectorAccuracy: CIDetectorAccuracyLow]
            )
        }
        return result
    }
    
    opened by HIIgor 0
  • How to pass json data to QRcode

    How to pass json data to QRcode

    Check List

    • [x] I have read the README.md, but the information I need is not there.
    • [x] I have searched in existing issues, but did not find a similar one.

    Issue Description

    Description

    I want to pass JSON data coming from API to QRcode so it can display information.

    Reproduce

    Other Comment

    question 
    opened by raghavnaphade 1
  • can't run EFQRCode example code on Xcode

    can't run EFQRCode example code on Xcode

    Check List

    • [ ] I have read the README.md, but the information I need is not there.
    • [ ] I have searched in existing issues, but did not find a similar one.

    Issue Description

    Description

    what maybe the problem? I just download example but having error

    Reproduce

    Other Comment

    opened by inthreekr 0
  • No such module 'EFQRCode'

    No such module 'EFQRCode'

    Check List

    • [ ] I have read the README.md, but the information I need is not there.
    • [ ] I have searched in existing issues, but did not find a similar one.

    Issue Description

    Description

    I'm testing this on watch os 9.0 using package manager, I install EFQRcode 6.2.1 version. and having no such module 'EFQRCode' error once I import EFQRcode on view struct am I the only one who have this problem on new test version? I haven't used it with old version of watch os

    Reproduce

    Other Comment

    opened by inthreekr 1
  • Bump jmespath from 1.4.0 to 1.6.1

    Bump jmespath from 1.4.0 to 1.6.1

    Bumps jmespath from 1.4.0 to 1.6.1.

    Release notes

    Sourced from jmespath's releases.

    Release v1.6.1 - 2022-03-07

    • Issue - Use JSON.parse instead of JSON.load.

    Release v1.6.0 - 2022-02-14

    • Feature - Add support for string comparissons.

    Release v1.5.0 - 2022-01-10

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Changelog

    Sourced from jmespath's changelog.

    1.6.1 (2022-03-07)

    • Issue - Use JSON.parse instead of JSON.load.

    1.6.0 (2022-02-14)

    • Feature - Add support for string comparisons.

    1.5.0 (2022-01-10)

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(6.2.0)
  • 6.2.0(Nov 26, 2021)

    Add

    • Add EFPointStyle protocol to allow customizing foreground point style.

    Deprecate

    • EFPointShape is deprecated. Use EFPointStyle instead.
    Source code(tar.gz)
    Source code(zip)
  • 6.1.0(Apr 8, 2021)

    Official V6 Release 🎉

    This release contains breaking changes, in addition to those mentioned in v6.0.0!

    Migration

    Wonder what's new in this official V6 release? How do I fix those new warnings? Check out the migration guide here: https://github.com/EFPrefix/EFQRCode/discussions/115, or watch the video demonstration on YouTube 或者 bilibili.


    Changelog

    Add

    • Supports chaining EFQRCodeGenerator configuration methods.
    • EFQRCodeGenerator properties are now public.
    • EFQRCodeGenerator.clearCache can be used to free up memories used for caching results.
    • English documentation is now available through Xcode quick help.
    • Swift: EFWatermarkMode.rectForWatermark(ofSize:inCanvasOfSize:) can be used to calculate the frame for watermark image in a canvas.
    • Objective-C: New tests to ensure APIs are available in Objective-C.

    Change

    • Renamed EFQRCodeGenerator configuration methods to be more consistent.
      • Renamed EFQRCode and reordered convenience generate function arguments to be consistent with generator methods.
    • EFQRCodeGenerator now caches more generated contents to improve performance.
    • EFQRCodeRecognizer expects non-nil image and returns non-nil array of results. The returned array may still be empty.
    • EFIntSize is now an immutable, final class.
    • Renamed CGColor extensions white and black to omit first argument label.
    • Objective-C: EFQRCodeGenerator and EFQRCodeRecognizer is now fully available to configure/use in Objective-C.

    Deprecate

    • EFQRCodeMode.none is now deprecated. Use nil and EFQRCodeMode? instead.

    Remove

    • EFUIntPixel is no longer a part of the public interface.
    • GIF generation no longer takes pathToSave parameter.
    • Objective-C: EFQRCode is no longer available in Objective-C. Use EFQRCodeGenerator and EFQRCodeRecognizer instead.

    Release Notes from v6.0.0

    Add

    • Add support to compile for macOS 10.10 using CocoaPods.

    Change

    • QRCodeSwift (FKA swift_qrcodejs) is now conditional dependency with Swift Package Manager 5.3+.

    Remove

    • Drop iOS 8 support from CocoaPods with Xcode 12 #101;
    • Remove Core and watchOS subspecs #100.
      • Please integrate EFQRCode directly instead of using subspecs.
      • QRCodeSwift should still be a conditional dependency for watchOS only.
    What happened to semantic versioning?

    Yes, I should have named release 6.0.0 as 6.0.0-rc.1, but I guess it's too late now :P

    Source code(tar.gz)
    Source code(zip)
  • 6.0.0(Nov 4, 2020)

    ReMiNdEr

    This is a PRE-RELEASE. We will introduce breaking changes (with migration helpers) in the next (few, pre-)release(s) without bumping the major version (i.e. for v6). We will, however, try our best to use proper release sequence (alpha, beta, release candidate, etc.) for future major version releases (e.g. v7).

    Add

    • Add support to compile for macOS 10.10 using CocoaPods.

    Change

    • QRCodeSwift (FKA swift_qrcodejs) is now conditional dependency with Swift Package Manager 5.3+.

    Remove

    • Drop iOS 8 support from CocoaPods with Xcode 12 #101;
    • Remove Core and watchOS subspecs #100.
      • Please integrate EFQRCode directly instead of using subspecs.
      • QRCodeSwift should still be a conditional dependency for watchOS only.
    Source code(tar.gz)
    Source code(zip)
  • 5.1.9(Nov 4, 2020)

    Add

    • Add Playgrounds with usage example #98;

    Fix

    • Fix SwiftPM syntax in README #99;
    • Fix GIF frame delay time setting #104;
    • Now generates QRCode with correct, specified content encoding on watchOS;
    • Pin swift_qrcodejs to 1.2.0, up to next minor #102.
    Source code(tar.gz)
    Source code(zip)
Owner
EFPrefix
A series of projects with(out) 'EF' prefix.
EFPrefix
A UIImageView extension to let the picture-cutting with faces showing better

UIImageView-BetterFace A UIImageView extension to let the picture-cutting with faces showing better Last update in v0.2_stable : add a UIImage+BetterF

Croath Liu 779 Sep 1, 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
A simple macOS app to read code from images, written purely in Swift using Vision Framework.

CodeReader A simple macOS app to read code from images, written purely in Swift using Vision Framework. Usage Drag an image Click the convert button R

Md Ibrahim Hassan 44 Nov 20, 2022
Image viewer (or Lightbox) with support for local and remote videos and images

Table of Contents Features Focus Browse Rotation Zoom tvOS Setup Installation License Author Features Focus Select an image to enter into lightbox mod

Nes 534 Jan 3, 2023
Photo Browser / Viewer inspired by Facebook's and Tweetbot's with ARC support, swipe-to-dismiss, image progress and more

IDMPhotoBrowser IDMPhotoBrowser is a new implementation based on MWPhotoBrowser. We've added both user experience and technical features inspired by F

Thiago Peres 2.7k Dec 21, 2022
Agrume - 🍋 An iOS image viewer written in Swift with support for multiple images.

Agrume An iOS image viewer written in Swift with support for multiple images. Requirements Swift 5.0 iOS 9.0+ Xcode 10.2+ Installation Use Swift Packa

Jan Gorman 601 Dec 26, 2022
High-performance animated GIF support for iOS in Swift

Gifu adds protocol-based, performance-aware animated GIF support to UIKit. (It's also a prefecture in Japan). Install Swift Package Manager Add the fo

Reda Lemeden 2.6k Jun 21, 2021
An image cropper / photo cropper for iOS like in the Contacts app with support for landscape orientation.

RSKImageCropper An image cropper for iOS like in the Contacts app with support for landscape orientation. Installation RSKImageCropper requires iOS 9.

Ruslan Skorb 2.4k Jan 5, 2023
An iOS/tvOS photo gallery viewer, useful for viewing a large (or small!) number of photos.

This project is unmaintained. Alex passed away in an accident in late 2019. His love of iOS development will always be remembered. AXPhotoViewer AXPho

Alex Hill 596 Dec 30, 2022
Script to support easily using Xcode Asset Catalog in Swift.

Misen Misen is a script to support using Xcode Asset Catalog in Swift. Features Misen scans sub-directories in the specified Asset Catalog and creates

Kazunobu Tasaka 123 Jun 29, 2022
Gifu adds protocol-based, performance-aware animated GIF support to UIKit.

Gifu adds protocol-based, performance-aware animated GIF support to UIKit. (It's also a prefecture in Japan). Install Swift Package Manager Add the fo

Reda Lemeden 2.8k Jan 7, 2023
add text(multiple line support) to imageView, edit, rotate or resize them as you want, then render the text on image

StickerTextView is an subclass of UIImageView. You can add multiple text to it, edit, rotate, resize the text as you want with one finger, then render the text on Image.

Textcat 478 Dec 17, 2022
SwiftGif - A small UIImage extension with gif support.

SwiftGif - A small UIImage extension with gif support.

SwiftGif 1.3k Dec 20, 2022
Asynchronous image downloader with cache support as a UIImageView category

This library provides an async image downloader with cache support. For convenience, we added categories for UI elements like UIImageView, UIButton, M

null 24.4k Jan 5, 2023
A tool support convert image gif to gif3d

Trick convert gif to gif3d using Swift Features Simple way to convert gif to gif3d Change background Change size eraser tool How to work Add a layer w

Chuong Tran 16 Jan 4, 2023
A simple and flexible way to add source of overlapping circular pictures, currently supports horizontal overlapping or distant pictures with great layout flexibility.

THIS PROJECT IS NO LONGER MAINTAINED. STILL ONE ONLY BEST UI SOLUTION FOR UIKIT DEVELOPERS. SOON WILL COME UP WITH SWIFTUI STILL CONTRIBUTORS ARE WELC

Kiran Jasvanee 673 Dec 19, 2022
A powerful new way to Reddit on iOS.

Slide for Reddit Slide is a powerful open-source, ad-free, Swift-based Reddit browser for iOS. Feel free to join us on the official subreddit for disc

Haptic Apps 460 Dec 28, 2022
Scan the MRZ code of a passport and extract the firstname, lastname, passport number, nationality, date of birth, expiration date and personal numer.

PassportScanner Works with 2 and 3 line identity documents. What is this With PassportScanner you can use your camera to scan the MRZ code of a passpo

Edwin Vermeer 441 Dec 24, 2022
Source code for iOS app "Photos for VK" — albums and photos manager for social network VKontakte

VK Photos (formally Photos for VK) VK Photos is an iOS app for manage albums and photos in social network VKontakte (vk.com) Screenshots Disclaimer ⚠️

Yury S. 29 Oct 8, 2022