Generate required icon sizes and iconset from a master application icon.

Overview

appicon plugin

fastlane Plugin Badge

Demo image

Getting Started

This project is a fastlane plugin. To get started with fastlane-plugin-appicon, add it to your project by running:

fastlane add_plugin appicon

Please note that this plugin uses minimagick, which requires either GraphicsMagick or ImageMagick library. If you have neither, you can install either via Homebrew:

brew install graphicsmagick

or

brew install imagemagick

The default CLI for the mini_magick gem is set to auto pick. It will first try to use GraphicsMagick (if you have it installed) otherwise it will use ImageMagick. If you want to be explicit about which CLI you use, set the minimagick_cli option to graphicsmagick or imagemagick. Not specifying this option will set MiniMagick to use auto which will choose what's available.

About appicon

Generate required icon sizes and iconset from a master application icon.

Since many apps use a single 1024x1024 icon to produce all the required sizes from, why not automate the process and save lots of time?

Example

Check out the example Fastfile to see how to use this plugin. Try it by cloning the repo, running fastlane install_plugins and bundle exec fastlane test.

Just specify the source image using the appicon_image_file. Optionally specify the devices using appicon_devices and the destination path using appicon_path.

We recommend storing the full-size picture at fastlane/metadata/app_icon.png so it can be picked up by deliver, as well as this plugin.

If you want to use this plugin to generate a app icon for Messages(sticker) extension, set messages_extension to true and add messages to the appicon_devices.

lane :basic do
  appicon(
    appicon_devices: [:ipad, :iphone, :ios_marketing],
    appicon_path: "MajorKey/Assets.xcassets"
  )
end

lane :test1 do
  appicon(appicon_image_file: 'spec/fixtures/Themoji.png',
             appicon_devices: [:ipad, :iphone, :ios_marketing])
end


lane :test2 do
  appicon(appicon_image_file: 'spec/fixtures/Themoji.png',
             appicon_devices: [:ipad, :iphone, :ios_marketing, :watch, :watch_marketing])
end

lane :test3 do
  # `appicon_image_file` defaults to "fastlane/metadata/app_icon.png"
  appicon(
    appicon_devices: [:iphone],
    appicon_path: 'wwdcfamily/Images.xcassets' # output path
  )
end

lane :test4 do
  appicon(appicon_image_file: 'spec/fixtures/Themoji.png',
             appicon_devices: [:macos])
end

lane :splash_screen do
  appicon(
    appicon_image_file: 'spec/fixtures/splash_screen.png',
    appicon_devices: [:universal],
    appicon_path: "ios/App/App/Assets.xcassets",
    appicon_name: 'Splash.imageset'
  )
end

lane :messages_extension do
  appicon(
    appicon_image_file: "fastlane/metadata/iMessageAppIcon.png",
    appicon_devices: [:iphone, :ipad, :ios_marketing, :messages],
    appicon_path: 'iMessageStickers/Stickers.xcassets',
    messages_extension: true
  )
end

# or

lane :android do
  android_appicon(
    appicon_image_file: 'spec/fixtures/Themoji.png',
    appicon_icon_types: [:launcher],
    appicon_path: 'app/res/mipmap'
  )
  android_appicon(
    appicon_image_file: 'spec/fixtures/ThemojiNotification.png',
    appicon_icon_types: [:notification],
    appicon_path: 'app/res/drawable',
    appicon_filename: 'ic_notification',
    generate_rounded: true
  )
  android_appicon(
    appicon_image_file: 'spec/fixtures/splash_base_image.png',
    appicon_icon_types: [:splash_port, :splash_land],
    appicon_path: 'app/res/drawable',
    appicon_filename: 'splash'
  )
end

Run tests for this plugin

To run both the tests, and code style validation, run

rake

To automatically fix many of the styling issues, use

rubocop -a

Issues and Feedback

For any other issues and feedback about this plugin, please submit it to this repository.

Troubleshooting

If you have trouble using plugins, check out the Plugins Troubleshooting doc in the main fastlane repo.

Using fastlane Plugins

For more information about how the fastlane plugin system works, check out the Plugins documentation.

About fastlane

fastlane is the easiest way to automate building and releasing your iOS and Android apps. To learn more, check out fastlane.tools.

Comments
  • Adaptive icon support?

    Adaptive icon support?

    Thank you for such a fantastic plugin! Runs great for me on iOS and Android. I was wondering if there were any plans for android adaptive icons? Android SDK 26+ allows for these types of icons. Users can now choose their icon style (circle or square), and the icons generated by this plugin result in a small square icon within a white circle if the user has their icons set as circular (see photo).

    screen shot 2018-07-17 at 5 59 56 pm
    opened by drewandre 13
  • Install fails

    Install fails

    Running the command from the readme results in the following output:

    [09:01:48]: Make sure to commit your Gemfile, Gemfile.lock and Pluginfile to version control
    Installing plugin dependencies...
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
        current directory: /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/unf_ext-0.0.7.3/ext/unf_ext
    /Users/rwoverdijk/.fastlane/bin/bundle/bin/ruby -r ./siteconf20170413-68829-6l16co.rb extconf.rb
    checking for main() in -lstdc++... *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of necessary
    libraries and/or headers.  Check the mkmf.log file for more details.  You may
    need configuration options.
    
    Provided configuration options:
    	--with-opt-dir
    	--without-opt-dir
    	--with-opt-include
    	--without-opt-include=${opt-dir}/include
    	--with-opt-lib
    	--without-opt-lib=${opt-dir}/lib
    	--with-make-prog
    	--without-make-prog
    	--srcdir=.
    	--curdir
    	--ruby=/Users/rwoverdijk/.fastlane/bin/bundle/bin/$(RUBY_BASE_NAME)
    	--with-static-libstdc++
    	--without-static-libstdc++
    	--with-stdc++lib
    	--without-stdc++lib
    /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
    You have to install development tools first.
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:541:in `try_link0'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:556:in `try_link'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:735:in `try_func'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:966:in `block in have_library'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:911:in `block in checking_for'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:351:in `block (2 levels) in postpone'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:321:in `open'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:351:in `block in postpone'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:321:in `open'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:347:in `postpone'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:910:in `checking_for'
    	from /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:961:in `have_library'
    	from extconf.rb:6:in `<main>'
    
    To see why this extension failed to compile, please check the mkmf.log which can be found here:
    
      /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/unf_ext-0.0.7.3/mkmf.log
    
    extconf failed, exit code 1
    
    Gem files will remain installed in /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/unf_ext-0.0.7.3 for inspection.
    Results logged to /Users/rwoverdijk/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/unf_ext-0.0.7.3/gem_make.out
    

    Installing unf_ext manually works:

    $ sudo gem install unf_ext -v '0.0.7.3'
    Building native extensions.  This could take a while...
    Successfully installed unf_ext-0.0.7.3
    Parsing documentation for unf_ext-0.0.7.3
    unable to convert "\xCA" from ASCII-8BIT to UTF-8 for lib/unf_ext.bundle, skipping
    1 gem installed
    
    opened by RWOverdijk 7
  • Refactoring targeting performance improvements

    Refactoring targeting performance improvements

    Making a long story short, this PR makes appicon plugin up to 10x faster.

    I've used Appicon and ImageMagick a lot during the last months and always wondered why would appicon action be the one taking more time in my lanes (between 6 and 12 seconds in my tests).

    As I'm using a lot of ImageMagick in other projects I did realize while reading the AppIcon code that it was opening the source image all the time it would resize.

    A simple trick to maintain quality while reducing memory usage and thus processing time is to sort the needed icons by size from the largest to the smallest and not reopen the image, only resize from one to the other.

    I did many tests using it to guarantee that quality and result would remain the same.

    I also did some performance check using the provided test icon:

    5 test results using the old code

    1. 7.262053
    2. 7.273785
    3. 7.5713
    4. 6.976845
    5. 6.770553

    average = 7.1709072 seconds

    5 test results using the new code

    1. 0.834892
    2. 0.820401
    3. 0.812199
    4. 0.81866
    5. 0.788127

    average = 0.8148558 seconds

    Minor improvements:

    • Added some files to .gitignore
    • Added a helper class to reduce code duplication
    • Updated Rubocop settings
    opened by felipeplets 6
  • GraphicsMagick  still required?

    GraphicsMagick still required?

    This plugin uses mini_magic,

    A ruby wrapper for ImageMagick or GraphicsMagick command line

    Can I use ImageMagick only? If not, what are the limiting factors?

    Using ImageMagick only would allow me to skip an install step on a CI machine, and cut down on build time, as ImageMagick is included in the VM's image, GraphicsMagick is not.

    opened by ssilverr 5
  • Update resolution 1x for ipad in appicon_action.rb

    Update resolution 1x for ipad in appicon_action.rb

    Thank your for your plugin you write. I use it effectively then i want to generate appicon for iPad with dimension '83.5x83.5'. Please helps me merge it into code. Thanks

    opened by biolinh 5
  • Configurable icon set name

    Configurable icon set name

    We use different icons depending on the build variant and these icons are saved with different icon set names in the asset catalog. This adds another parameter to allow the name to be configured.

    opened by cooksimo 5
  • How to pass list of devices as arguments to the lane

    How to pass list of devices as arguments to the lane

    Hi, I don't know ruby language and I'm trying to find a way to pass list of devices as arguments since values are not string.

    current state

    lane :test1 do
      appicon(
          appicon_image_file: 'spec/fixtures/Themoji.png',
          appicon_devices: [:ipad, :iphone, :ios_marketing])
    end
    

    expecting state

    lane :test1 do |options|
      appicon(
          appicon_image_file: 'spec/fixtures/Themoji.png',
          appicon_devices: options[:devices]
      )
    end
    

    command:

    bundle exec fastlane test1 devices:"[:iphone, :ipad, :ios_marketing]"
    

    Thanks.

    opened by ngouass 4
  • Rearrangement of android_appicon action parameters

    Rearrangement of android_appicon action parameters

    Rearrangement of android_appicon action parameters

    Description

    This PR contains breaking changes for android_appicon action.

    Besides fixing the issue https://github.com/KrauseFx/fastlane-plugin-appicon/issues/30, I decided to change parameters to something that seems more reasonable to me. Instead of devices parameter I used icon_types, which provide icon sizes for the type (launcher, notification) instead of device (phone, tablet).

    Changes

    • Added sample notification icon to spec/ and mentioned it in README.md.
    • Added gems/ to .gitignore.
    • Changed appicon_devices to appicon_icon_types, merged tablet and phone into launcher type (as most Android devices are xxhdpi or xxxhdpi nowadays).
    • Added notification type that can be used to generate notification icons, which replaces notification_icons and additional parameters.
    • Fixed potential issue mentioned in https://github.com/KrauseFx/fastlane-plugin-appicon/issues/30 by setting default, empty appicon_custom_sizes parameter.
    opened by krzysztof-miemiec 4
  • New 1024x1024 image needed

    New 1024x1024 image needed

    Missing the new

        {
          "size" : "1024x1024",
          "idiom" : "ios-marketing",
          "filename" : "someImage.png",
          "scale" : "1x"
        }
    

    this is required image

    question 
    opened by GantMan 3
  • android_appicon command won't run in 0.11.0

    android_appicon command won't run in 0.11.0

    I updated the plugin to 0.11.0 recently. When I try to run the android_appicon action like:

    android_appicon(
          appicon_image_file: "src/assets/icon.png",
          appicon_devices: [:phone, :tablet],
          appicon_path: "android/app/src/main/res/mipmap"
    )
    

    it fails with the following message:

    /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-plugin-appicon-0.11.0/lib/fastlane/plugin/appicon/actions/android_appicon_action.rb:47:in `merge': [!] no implicit conversion of nil into Hash (TypeError)
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-plugin-appicon-0.11.0/lib/fastlane/plugin/appicon/actions/android_appicon_action.rb:47:in `run'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:253:in `block (2 levels) in execute_action'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in `execute_action'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:231:in `block in execute_action'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:227:in `chdir'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:227:in `execute_action'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:148:in `trigger_action_by_name'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/fast_file.rb:148:in `method_missing'
            from Fastfile:215:in `block (2 levels) in parsing_binding'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/lane.rb:33:in `call'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/lane_manager.rb:56:in `cruise_lane'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
            from /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in `call'
            from /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in `run'
            from /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in `run_active_command'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:75:in `run!'
            from /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in `run!'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/commands_generator.rb:337:in `run'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/commands_generator.rb:42:in `start'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/fastlane/lib/fastlane/cli_tools_distributor.rb:94:in `take_off'
            from /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.76.0/bin/fastlane:20:in `<top (required)>'
            from /usr/local/bin/fastlane:23:in `load'
            from /usr/local/bin/fastlane:23:in `<main>'
    

    I suppose it's a bug, because the same command works perfectly when run on 0.10.0.

    opened by krzysztof-miemiec 3
  • Remove transparency from source PNG

    Remove transparency from source PNG

    As iOS icons cannot have transparency it would be nice to have an option to remove transparency from a source PNG, that way you could have the same source image for both iOS and Android, but iOS image could be flattened to remove transparent background.

    opened by escobar5 3
  • the generated macos app iconset is invalid

    the generated macos app iconset is invalid

    my Fastfile

    lane :gen_appicon do
        appicon(
          appicon_image_file: 'iBackupExplorer/Resources/AppIcon512.png',
          appicon_devices: [:macos],
          appicon_path: 'iBackupExplorer/Resources/Assets.xcassets'
        )
      end
    

    the generated appiconset

    Snip20221119_33

    I guess this is caused by the wrong param appicon_devices value [:macos], the right value should be [:mac]. If I changed the generated appiconset's Content.json, it turns to valid.

    see https://github.com/fastlane-community/fastlane-plugin-appicon/issues/15

    opened by andy380743909 0
  • Could not find action, lane or variable 'appicon'

    Could not find action, lane or variable 'appicon'

    It seems that the appicon action is not working on the iOS.

    I have following lane:

      lane :icon do
        appicon(
          appicon_image_file: 'fastlane/metadata/logo-1024.png',
          appicon_devices: %i[ipad iphone ios_marketing watch watch_marketing],
          appicon_path: 'Images'
        )
      end
    

    that results to Could not find action, lane or variable 'appicon'. Check out the documentation for more details: https://docs.fastlane.tools/actions when running bundle exec fastlane icon

    opened by Jukez17 1
  • Intelligently detect the minimum input size needed

    Intelligently detect the minimum input size needed

    Previously there was a hard-coded check to ensure the input image was at least 1024x1024. But there are often cases where that size of image is not needed (e.g. when adding an alternate iOS app icon which doesn't need a corresponding marketing version)

    Now the check is done based on the output sizes actually requested.

    In addition, there is now an "allow_upsampling" flag so that this check can be bypassed entirely.

    opened by bdolman 0
  • iTMSTransporter requires App Store Icon to have no transparent or alpha channel

    iTMSTransporter requires App Store Icon to have no transparent or alpha channel

    This very handy plugin only produces .png files which are now rejected when using Fastlane to upload to App Store Connect. Is there an ability to output .jpg files in the asset catalog?

    Screenshot 2021-08-19 at 11 04 33 .
    opened by sambeedell 1
Releases(v0.16.0)
  • v0.16.0(Mar 25, 2021)

    • Added support for creating Messages extension app icon (#64) by @philprime
    • Added support for macOS icons (#65) by @philprime
    • Add minimagick_cli option to choose graphicsmagick or imagemagick (#67) by @KBSchmidt
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Apr 28, 2020)

    • generates rounded images for android via #43 by @RishabhTayal
    • added support for launch images for android via #56 by @josh-m-sharpe
    • added support for splash images for ios via #57 by @josh-m-sharpe
    Source code(tar.gz)
    Source code(zip)
Owner
fastlane Community
🚀 Quality maintained plugins from the fastlane community
fastlane Community
This repository contains rules for Bazel that can be used to generate Xcode projects

rules_xcodeproj This repository contains rules for Bazel that can be used to generate Xcode projects. If you run into any problems with these rules, p

BuildBuddy 233 Dec 28, 2022
Command line program that detects unused resource strings in an iOS or OS X application.

Abandoned Resource String Detection This command line program detects unused resource strings in an iOS or OS X application. Updated to Swift 3, thank

Josh Smith 360 Nov 26, 2022
All new design. Inspect your iOS application at runtime.

Peek: All new design Peek 5 with an all new design and all new features. Whether you're a developer, designer or QA/tester, Peek can help you at all s

Shaps 2.6k Dec 17, 2022
Automatically build and rebuild Xcode image catalogs for app icons, universal images, and more

Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more.

Dotan J. Nahum 822 Dec 21, 2022
AVXCAssets Generator takes path for your assets images and creates appiconset and imageset for you in just one click

AVXCAssets Generator Often while developing an app, We ran into a condition when we need to scale images to each and every aspect ratios for icons and

Angel Vasa 339 Dec 6, 2022
Build native iOS, Android, and Web apps with Capacitor and Remix.run 💿

This repository holds production ready Capacitor templates for building native mobile applications using Remix. Using Capacitor, you can quickly build out a native mobile application for iOS and Android using web technology, such as Remix.

Ionic 70 Dec 30, 2022
Swift CLI for strong-typing images, colors, storyboards, fonts and localizations

Shark Shark is a Swift command line tool that generates type safe enums for your images, colors, storyboards, fonts and localizations. Because Shark r

Kaan Dedeoglu 377 Dec 1, 2022
Strong typed, autocompleted resources like images, fonts and segues in Swift projects

R.swift Get strong typed, autocompleted resources like images, fonts and segues in Swift projects Why use this? It makes your code that uses resources

Mathijs Kadijk 8.9k Jan 6, 2023
Xcode storyboards diff and merge tool.

StoryboardMerge Storyboard diff and merge tool which: compares and merges two storyboard files, provides an automatic merge-facility, The storyboardin

null 238 Sep 12, 2022
swiftenv allows you to easily install, and switch between multiple versions of Swift.

Swift Version Manager swiftenv allows you to easily install, and switch between multiple versions of Swift. This project was heavily inspired by pyenv

Kyle Fuller 1.9k Dec 27, 2022
An adorable little framework and command line tool for interacting with SourceKit.

SourceKitten An adorable little framework and command line tool for interacting with SourceKit. SourceKitten links and communicates with sourcekitd.fr

JP Simard 2.1k Jan 5, 2023
This application was created as a practice and shows a simply VIPER master-detail application.

MARVEL UNIVERSE CHARACTERS This application was created as a practice and shows a simply VIPER master-detail application. Main screen shows a list of

Daniel Moraleda 0 Nov 15, 2021
View your app on different device and font sizes

Sizes reduces the time it takes to evaluate all of our apps possible device sizes, orientations and font combinations. With Sizes we'll avoid launchin

Marcos Griselli 1.2k Oct 27, 2022
Easy way to detect iOS device properties, OS versions and work with screen sizes. Powered by Swift.

Easy way to detect device environment: Device model and version Screen resolution Interface orientation iOS version Battery state Environment Helps to

Anatoliy Voropay 582 Dec 25, 2022
Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. Neither need to write any code nor any setup required and much more.

IQKeyboardManager While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the UITextField/UITextView. IQKey

Mohd Iftekhar Qurashi 15.9k Jan 8, 2023
Typical master detail SAMPLE application written in Swift to test NY Times Most Popular API

NYTimes-Demo: Typical master detail SAMPLE application written in Swift to test NY Times Most Popular API. This SAMPLE application is written in Swift

Atif Naveed 0 Nov 3, 2021
Decrypts FairPlay applications on iOS 13.4.1 and lower, no jb required

yacd (Yet Another Code Decrypter) Decrypts FairPlay (App Store) applications on iOS 13.4.1 and lower, no jb required Use for research purposes only, I

Derek 669 Dec 10, 2022
IHKeyboardAvoiding is an elegant solution for keeping any UIView visible when the keyboard is being shown - no UIScrollView required!

IHKeyboardAvoiding An elegant solution for keeping any UIView visible when the keyboard is being shown Requirements IHKeyboardAvoiding Version Objecti

Idle Hands Apps 1.4k Dec 14, 2022
UITextField character counter with lovable UX 💖. No math skills required 🙃.

TextFieldCounter UITextField character counter with lovable UX ??. No math skills required ??. Features Set max length of UITextField. A beautiful an

Fabricio Serralvo 434 Dec 22, 2022
Changes screen gamma on iOS, no jailbreak required

GammaThingy Changes screen gamma on iOS, no jailbreak required RIP official sideload f.lux (https://justgetflux.com/sideload/) ?? With the new Night S

Thomas Finch 771 Nov 3, 2022