Skip to content
Assorted category and utility classes for iDevelopment
Branch: master
Clone or download
Latest commit 94b9ed2 Jun 6, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
Example Updating Pod in Example Jun 5, 2019
Pod Make pin public Jun 5, 2019
.gitignore Ignore test_output in root directory too Jan 24, 2017
.travis.yml Update to Xcode 10.2 May 14, 2019
Gemfile.lock Update gems May 10, 2019
LICENSE Initial public release. Feb 3, 2016 Update to Xcode 10.2 May 14, 2019
VOKUtilities.podspec Bump podspec Jun 5, 2019


CI Status Version License Platform

Assorted category and utility classes for iDevelopment. Licensed under MIT License.

VOKUtilities requires Xcode 10.2 or higher.

This pod is comprised of multiple standalone subspecs that each provide some narrow functionality. Rather than using the parent VOKUtilities pod in your Podfile, you should choose only the subspecs you need. All of these are available for iOS, and some subspecs are also available on macOS and tvOS platforms. See the podspec file for specifics.

The available subspecs are listed below, in alphabetical order.


This category on NSCalendar adds a convenience method to get the most recent weekday before a given NSDate.


Collection of helpers for NSNumberFormatter. Presently includes:

  • A singleton currency formatter which uses the user's auto-updating current locale.


This category on NSPredicate adds convenience methods for some commonly constructed predicates:

  • value for key path. Shorthand for predicate format: @K == %@
  • key path in a collection. Shorthand for predicate format: @K IN %@


This category on NSString adds methods to test:

  • The structural validity of credit card numbers
  • The format validity of credit card CVV codes
  • A string against an arbitrary regular expression

There are also several methods to test whether a string is an email address. It should be noted that the only 100% reliable way to validate an email address is to send an email to it and verify receipt of that email. and its source code are where we've gotten the test cases we use to check the accuracy of these validators. The validation methods, in order from most likely to least likely to accept a valid email address, test:

  • Superficially, if a string could be an email address by testing for the presence of an @:
    • Rejects none of the valid-email test cases.
    • Allows a large number of invalid email addresses.
  • A string against the W3C's example email validation regex:
    • Rejects only deprecated or obvious edge-case emails.
    • Allows only a few invalid email addresses.


This category on UIColor adds convenience creation methods to create colors based on their hex representations, both as integers (0xA4C53F) and as strings (@"A4C53F"), and an instance method to get the hex-string representation of a color. The methods that generate UIColor objects from strings are particularly flexible, ignoring leading/trailing non-hexadecimal characters (such as leading #) and allowing various shorthands:

  • X for XXXXXX
  • XY for XYXYXY
  • XYZ for XXYYZZ


This category makes it very easy to crop a square view into a circle - note that this also sets clipsToBounds so that it will work on subclasses like UIImageView that normally would overflow their bounds.


This category on UIView adds a couple of useful debugging helpers:

  • vok_addDebugBorderOfColor: adds a simple border to a given view, but only when debugging. This is helpful if you don't want to use Chisel to turn the border on every time your run.
  • vok_addGestureRecognizerWithTestFinger: adds a little red circle that follows the given gesture recognizer's locationInView of the receiver whenever XCTestCase is actually viable. This allows you to see where touches land in UIViews without having to add this handling to every single view.


This class adds handling for the simplest cases of showing/hiding the keyboard when the first subview of a UIViewController's view is either a UIScrollview or a subclass of a UIScrollview like a UITableView.


A helper class with a single method, showAlertFromViewController:withTitle:message:buttons: for presenting an alert in the appropriate fashion both pre- and post-iOS 8. Takes an array of VOKAlertActions which have a title and action block and correspond to buttons.


This helper class provides a single method which can be called to send a basic email, and helpers to deal with the fact that Apple totally screwed up mail in the Simulator.


This header file is for exposing existing framework properties to interface builder through IBInspectable. To expose a property, add the relevant class extension declaration if needed. Then, copy and paste the property declaration from the existing framework header file. Finally, add IBInspectable before the property's class name. Interface builder should now display the exposed property in the attributes inspector.


Macros to help with keys and key paths with compile-time checking.


This class provides a method to replace the root view controller of the application's window using provided animation options. Some convenienve methods are also included to simplify calls.


Assorted Swift convenience extension methods and classes.


Assorted Swift convenience extension methods and classes meant to be used for unit testing.

You can’t perform that action at this time.