|Looking for a job at a company that prioritizes native mobile apps?|
Try Vettery and we'll connect you directly with thousands of companies looking for talented iOS devs.
A framework, a command line tool and a Mac application for translating Swift code into Kotlin. Kotlin is the hip new language over in the Android world that some consider to be a replacement for Java like Swift is for Objective-C. SwiftKotlin applies transformations to Swift code to get as correct as possible Kotlin code. It handles string transformations, transforms guard statements to negative if statements, properties, memory management and many more features. It also comes with a Mac app to copy and paste your code and a command line tool to transform a complete project to Kotlin.
A tool that aims to make using colours between code and Storyboards easier and more maintainable. SwiftColorGen reads all storyboard files to find common colours. It then creates the colours in an .xcassets folder (without any duplications) and refers back to them in the storyboards. Then, it creates a UIColor extension allowing you to access the same colours programmatically. It automatically generates names for the colours found using the closest webcolor name, or you can set your own custom name.
A collection of essential cross-platform UI components for React Native apps. NativeBase gives apps a native look and feel with platform specific design for Android and iOS. They have also provided a Sketch Template that includes all the NativeBase components so you can design prototypes that you can accurately recreate using React Native. There are also a number of open source demo projects including a Starter Kit and a Kitchen Sink app that showcases every single NativeBase component.
A powerful vector graphics library written in Swift. Macaw brings scalable vector graphics to your app by describing all graphics in high level scene elements. You can define your elements in code or import and render from SVG files. You can also add affine transformations, user events, animation and various effects to bring your designs to life. Also check out the Macaw-Examples repo that features various working examples of Macaw in use including recreations of three Apple Design Award winning apps.
An online tool for automatically converting Objective-C to Swift. Swiftify can convert everything from a small code snippet to an entire project, and supports most of the main features of both languages. They've also recently created an Xcode extension available on the Mac App Store that lets you convert Objective-C to Swift without even leaving Xcode. The generated code might not be guaranteed to be perfect but it could save you a lot of time when converting your projects. You can use the tool online for free with a few restrictions or pay an monthly or annual fee to unlock all the features.
A tool that helps you avoid repeating yourself with duplicate code for common iOS development tasks. Sourcery scans your source code, applies your personal templates and generates Swift code for you, allowing you to use meta-programming techniques to save time and decrease potential mistakes. It saves you time and errors for tasks such as adding NSCoding support, JSON serialisation, or adding Equatable or Hashable conformance. It also features built-in daemon support, allowing you to write your templates in real-time side-by-side with generated code for immediate feedback.
A curated list of awesome iOS libraries, including Objective-C and Swift Projects. iOS LibHunt currently features over 1600 projects categorised into 125 different categories, from UI and animation to networking, databases and more. Each library is given a popularity and activity rating which is automatically based on the stars, watchers and commits of the associated GitHub repository, making it easier for you to choose which library is best. The site also accepts contributions if you know of a great library that's not currently featured.
A code library and command line tool for reformatting Swift code. SwiftFormat can be added to your project as a Build Phase or run manually from the command line. It applies a set of rules to the whitespace around the code, while leaving the meaning intact, making it great for enforcing a common coding style. It already supports a huge list of rules including spacing around parentheses, brackets and braces, line breaks around scope, semicolons, and more with additional rules planned in a future update.
A complete framework that makes iOS app development easier by providing lots of commonly used components and a theming engine for customising. Redbeard includes a number of UI features including forms, a several different extensible layouts, and UI containers such as sidebars and panes. The theming engine allows your app UI to be completely rebranded with minimal code changes, and an ORM, REST client, Network Centre and a number of other helpers and extension methods make dealing with data and networking much easier.
A view layout library for iOS written in Swift by the developers at LinkedIn. LayoutKit was created because the LinkedIn developers found that Auto Layout is not performant enough for complicated view hierarchies in scrollable views. It aims to be as fast as manual layout code and allows layouts to be computed on a background thread so user interactions are not interrupted. It works seamlessly with UIKit and utilises several modern Swift patterns including declarative layouts that make it easier to develop, document, code review, test, debug, profile, and maintain.
A tool that aims to improve Swift code quality, by checking for conformance of code metrics. Unlike similar linting tools, Taylor focuses on more subjective code quality metric by providing warnings for rules such as excessive class or method length, too many overly complicated methods, excessive block depth or too many method parameters. It can be run independently from the command line on a single file or a complete project, or you can add a build phase to add warnings to Xcode.
A super useful reference guide to using NSDateFormatter format strings. NSDateFormatter.com lets you test out format strings by entering a date, format string and locale. The output of NSDateFormatter is immediately displayed along with several common examples ready to copy and paste into Xcode. The website is written with Swift 3 so actually uses NSDateFormatter under the hood to guarantee accuracy in the way it parses dates. There's also a handy reference that describes what each format string character means.
An open and searchable index of Swift Package Manager modules. Swift 3, currently in beta, introduced the Swift Package Manager, making packaging and including Swift libraries incredibly easy. But discovering these modules is still somewhat problematic. Swift Modules aims to solve that problem by providing tools to help you find and integrate packages. Everything is searchable or you can browse by creator, and each module has a quick link back to its GitHub page.
A simple service that will solve your Regex problems. With GetRegex, you describe the regex you need, give some examples of matches, and (after paying the fee) a professional developer will create the regular expression in less than one hour. Once you've tested and approved the job, they'll pay the developer, and you have your needed regular expression. They'll create regular expressions for any language or platform, so if you get really stuck trying to perfect a regex, GetRegex might be the solution.
A static analysis and lint tool for source code written in Swift. Tailor analyses your code to help avoid bugs and ensure consistent styling by enforcing guidelines outlined in the style guides from Apple, GitHub, Ray Wenderlich, Jamie Forrest, and Coursera. Once installed, you can run Tailor directly from the command line by providing a list of files and directories to analyse, or it can be integrated with Xcode so the output is displayed inline within the Editor and as a list in the Log Navigator.
An OS X app that works with Xcode to keep your Swift code clean. Swift-Clean takes the answers you give to a short survey on Swift coding style and creates a configuration file. The Mac app then uses this to either fix errors automatically or create build warnings if it can't. Once you've completed the survey, you can not only download your own configuration file, but you can also choose from the average of all responses or the Stack Overflow results.
A collection of hand curated iOS open-source libraries written in Swift. iOS Cookies groups the libraries by several useful categories including Database, Networking, Autolayout, Animation, Cache and loads more. The collection is updated regularly so you can stay up to date by subscribing to the email newsletter and you can also submit your own suggestions if there's something missing from the site.
A collection of tools written in Swift 2 to auto-generate Swift 2 code for various assets of your project. SwiftGen generates extensions including enums, structs, initializers and more for images in Asset Catalogs, Localizable.strings strings, UIStoryboards and their scenes, and UIColors. The generated code gives you proper Swift type-safety using value types, helping you to avoid typos with Xcode auto-completion.
A simple script for creating a Swift UIImage extension that gives you type safe access to your Xcode Asset Catalog. Misen scans sub-directories in the specified Asset Catalog and creates a UIImage extension file that provides application specific enums which are constructed from the Asset Catalog image names, and a UIImage non-null returning initializer whose argument is one of the created enum values. You can run Misen independently from the command line or you could add it as a Run Script build phase in Xcode.
A Swift script that generates Swift code based on storyboard files to make working with storyboards and segues easier and type safe. Natalie helps reduce usage of strings as identifiers for segues or storyboards. The generated code adds the ability to enumerate storyboards, instantiate view controllers, perform segues, and create reusable cells all without using a single string identifier. Natalie can be used directly from the command line but you can also integrate it with Xcode as a Run Script Build Phase.
A tool to enforce Swift style and conventions, loosely based on GitHub's Swift Style Guide. SwiftLint uses Clang and SourceKit to use the Clang AST representation of your source files for more accurate results. Once installed, SwiftLint can be used directly from the command line or added as a build phase in Xcode to show errors and warnings in the IDE. SwiftLint currently supports over 15 style rules which are themselves written in Swift, so you can contribute your own.
A tool which enables a team of iOS developers to commit Objective-C code to a git repository using a unified style format, without requiring any manual fixup. [ Space Commander] can be used to enforce formatting conventions before code is committed, format code with a single command (both individual files or the entire repo), and fail a build (during a pull request) if unformatted code made it into the branch. Style format is specified using clang-format, but it also supports custom formatting scripts.
A guide for Swift style and conventions by the engineers at GitHub. The GitHub Swift Style Guide aims to increase rigour and decrease likelihood of programmer error, increase clarity of intent, and reduce verbosity. It covers most aspects of Swift including let versus var, unwrapping optionals, access control, structs versus classes, and more. They are also accepting issues and pull requests if there is something you think should be added to the guide.
A drop-in SDK that provides a route-matching block-based way to handle deep links. DeepLink Kit handles all the parsing and route-handling and parameter matching so you don't have to and will call a custom block any matched links. Using DeepLink Kit is a simple as creating a router, registering routes for each of your URLs and passing any incoming URLs to the router when your app is launched from a link. It also includes AppLinks support by importing the AppLinks category which provides convenience accessors to all AppLinks 1.0 properties.
A dependency manager for iOS and OS X projects. Unlike the very popular CocoaPods, Carthage builds the dependencies you list in a Cartfile using xcodebuild and provides you with binary frameworks. There is no need for a managed Xcode workspace, you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings. CocoaPods’ approach is easier to use, while Carthage’s is flexible and unobtrusive. However, there is no central list of projects so you have to find the frameworks on GitHub or similar.
A simple tool that counts blank lines, comment lines, and physical lines of source code in over 100 popular programming languages including Objective C. Source Code Counter can count lines of code in directories, files and even compressed archives like tar balls and zips. The source code lists persists across application launches and computer restarts and results are sortable by language, files, blank, comment and code. A fun tool for bragging or just keeping track of changes over time.
A dependency injection framework for Objective-C and Swift. Typhoon aims to remove tight couplings between dependencies in your code to make it easier to test or swap out components of you app. Features include support for circular dependencies and injection of view controllers, storyboard integration, support for both initializer and property injection, a very small memory and CPU footprint, plus loads more. Typhoon comes with a fully working sample app in both Objective-C and Swift that you can use to learn how to use the framework.
Swift is rapidly gaining in popularity and developers are falling in love with the new language, but we are stilling missing best practices, patterns and coding methodologies. That Thing in Swift is a site that brings together many of the things you know exactly how to do in Objective-C but are still unsure about in Swift. Swift syntax seems to come pretty easy to iOS developers but we still need a lot of exploration to find the best reimplementations our favorite patterns in Swift.
A smart code generator for App Store receipt validation for OS X and iOS apps. Apple recommends that you validate App Store receipts to block jailbroken devices but doesn't provide sample code or APIs to prevent easy cracking. Receigen generates code that is ready-to-integrate, pure C, fully debuggable and integrates various protection mechanisms to harden the reverse engineering. Every time the code is generated, it is different in order to defeat binary pattern detection and includes various mechanisms like string and constant obfuscation, non-predictable branching, non-explicit function calls, dead-code and more
A simple system that simplifies bridging between an iOS extension and its containing application. MMWormhole allows you to pass data or commands back and forth between the two locations. Messages are archived to files which are written to the application's shared App Group. A good way to think of the wormhole is a collection of shared mailboxes. Using MMWormhole is extremely straightforward, and particularly useful when using with WatchKit.
An OS X app that lets you convert any valid JSON object to a class in one of the several supported languages. As you type or paste your JSON, JSONExport will display a preview of the generated content including a constructor and utility method for converting the object back into JSON. You can also change the root class name, class prefix or package name before saving the generated files. JSONExport supports several languages including Swift classes or structures using built-in NSJSONSerialization, Swift classes using the SwiftyJSON library, and Objective-C. JSONExport is written in Swift and open source on GitHub.
A free service that lets you easily share your code snippets online. Just copy-paste your code, save it and you will be given a URL to share you code with anyone. You or anyone else can then edit the snippet and save a new version with a new URL. You can access all versions of a snippet from any of the version URLs. You can also enable syntax highlighting by selecting the language when you create your snippet (Objective-C is supported). Snippets are kept forever if it gets at least 1 view every year and accounts are coming soon, at which point you will be able to search and delete your code snippets.
A cross platform development environment that lets you build native apps for iOS, Mac and other platforms in C#. Xamarin lets you write C# that can be shared across all the platforms it supports but uses native UIs for each platform to give the best user experience. Xamarin includes a complete IDE, Xamarin Studio for Mac and Windows, or you can use Xamarin with Visual Studio. They also offer other features to allow you to utilise over 20,000 .NET libraries and to test your app on hundreds of real devices in their Test Cloud.
A compiler and toolchain that lets you write native apps for iOS, Mac, Android, Windows and Windows Phone in C#. RemObjects C# isn't a .NET bridge, but instead provides direct access to each platform's native APIs. The RemObjects C# language provides access to all Cocoa, Cocoa Touch and the Objective-C Runtime frameworks including external open source and third party libraries and compiles to a fully native executable for the Objective-C runtime.
A service that lets you build your Objective-C iOS apps natively for Android. It compiles Objective-C to native ARM and x86 machine code so no virtual machines, emulators, or Java translation. It's primarily aimed at games as it supports several of the most popular game engines. I've not tried it myself but it is already used by several very popular games.
A project that aims to simplify iOS development by allowing developers and designers to add animations without writing any code. Instead, you just need to add a couple of attributes to your views in Interface Builder to configure your animation. Canvas is a really useful tool for designers who might want to tweak animations but don't feel comfortable diving into the code.
This is one for Alfred fans (which you all should be) - a simple Alfred workflow for searching CocoaPods. Just type 'pod' followed by your search query and it'll give you a list of matching Pods. Hit Enter on one of the results and it'll take you to the Pod in Safari or hit Alt+Enter to copy the dependency definition to your clipboard ready to be pasted into your Podfile.
An iPhone app that keeps you updated with the CocoaPods world. Podlife lets you search for any pod and filter by Mac and iOS which you can then mark as a favourite and get notified whenever it is updated. Each pod is also linked to it's documentation on CocoaDocs and there is an option to receive notifications whenever new pods are added of the CocoaPods gem is updated. The app is free but there is also an in-app purchase to go "Pro" to support the developer.
A collection of open source and commercial UI components for iOS and OS X. You can search and filter the collection by platform and license or whether it's available on CocoaPods, and each component shows its current star rating and the apps it's been used in. Cocoa Controls is a great way to find really useful third-party UI components or just to get inspiration for your own. You can also submit your own controls to be listed or distributed on the site.
A site that does for Objective-C categories what this site does for iOS development tools. For the uninformed, categories are a great feature of Objective-C that allows functionality to be added to a class without subclassing and Cocoa Cats is a fantastic user-driven collection of cocoa categories. The list is user generated so the there is a form at the bottom of the page to submit a new category.
A marketplace for commercial open-source software. Binpress provides an alternative to selling a complete app on the App Store by providing a platform for developers to monetize their open-source projects and turn it into a professional business, in the same mold as MySQL, Redhat, etc. You could also buy software to include in your app or propose an open-source project for other developers to build.