How Swift standard types and classes were supposed to work. A collection of useful extensions for the Swift Standard Library, Foundation, and UIKit.
Easily get an object at a specified index:
var myArray = ["charmander","bulbasaur","squirtle"]
print(myArray.get(1)) // "bulbasaur"
Easily access a random element:
var myArray = ["charmander","bulbasaur","squirtle"]
print(myArray.random()) // bulbasaur or something else
Easily find the indexes of an object:
var myArray = ["charmander","bulbasaur","squirtle","charmander"]
print(myArray.indexesOf("charmander")) // [0,3]
Easily check if an array contains another array:
var myArray = ["charmander","bulbasaur","squirtle"]
print(myArray.containsArray(["charmander","bulbasaur"])) // true
print(myArray.containsArray(["string"])) // false
Block Objects These objects use completion blocks instead of selectors, taken from: CEMKit-Swift Easily initialize a BlockButton:
let button = BlockButton(x: 0, y: 0, w: 100, h: 100) { (sender) -> Void in
print("Block button clicked!")
}
let button1 = BlockButton(x: 0, y: 0, w: 100, h: 100)
button1.addAction { (sender) -> Void in
print("Block button clicked!")
}
// There are also BlockWebView, BlockTap, BlockPan, BlockSwipe, BlockPinch, BlockLongPress
Easily convert between different types:
var myCGFloat = myInt.toCGFloat
var myString = myInt.toString
var myDouble = myString.toDouble
var myInt = myDouble.toInt
Easily toggle it:
var myBool: Bool = true
print(myBool.toggle()) // false
Easily initialize your objects:
let myView = UIView(x: 0, y: 0, w: 100, h: 100)
print(myView.frame) // (0.0, 0.0, 100.0, 100.0)
Easily access your ViewController on top of your view stack:
ez.topMostViewController?.presentViewController(myAlertController, animated: true, completion: nil)
// topMostViewController is your rootViewController
// Intended for showing small VCs like UIAlertControllerstring.length, string.capitalizefirst, string.trim, string.isemail,
Easily initialize your colors:
let myColor = UIColor(r: 100, g: 100, b: 100) // Default alpha is 1
Easily run block of codes after a certain delay:
Timer.runThisAfterDelay(seconds: 2) { () -> () in
print("Prints this 2 seconds later in main queue")
}
Easily run code every seconds:
var count = 0
Timer.runThisEvery(seconds: 1) { (timer) -> Void in
print("Will print every second")
if count == 3 {
timer?.invalidate()
}
count += 1
}
Easily access your projects version and build numbers:
print(ez.appVersion) // 0.3
print(ez.appBuild) // 7
print(ez.appVersionAndBuild) // v0.3(7)
Easily track screen shots:
ez.detectScreenShot { () -> () in
print("User took a screen shot")
}
- Download and drop '/Sources' in your project.
- Congratulations!
You can use CocoaPods to install EZSwiftExtensions
by adding it to your Podfile
:
platform :ios, '8.0'
use_frameworks!
pod 'EZSwiftExtensions' #Stable release for Swift 3.0
pod 'EZSwiftExtensions', :git => 'https://github.com/goktugyil/EZSwiftExtensions.git' #Latest release for Swift 3.0
pod 'EZSwiftExtensions', :git => 'https://github.com/goktugyil/EZSwiftExtensions.git', :branch => 'Swift2.3' #For Swift 2.3
pod 'EZSwiftExtensions', '~> 1.6' #For Swift 2.2
To get the full benefits import EZSwiftExtensions
wherever you import UIKit
import UIKit
import EZSwiftExtensions
Install via Carthage
Create a Cartfile
that lists the framework and run carthage bootstrap
. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/EZSwiftExtensions.framework
to an iOS project.
github "goktugyil/EZSwiftExtensions"
- Swift 2 or later
- More extensions! Please if there is an extension you are constantly using, send a pull request now!
- Fancy pictures and jpgs in documentation.
- Documentations inside code
- List of contents inside readme
- Completing
TODO
s in source code. - OSX compatibility and add here https://github.com/AndrewSB/awesome-osx
- ExSwift by pNre
- SKTUtils by raywenderlich
- CEMKit-Swift by cemolcay
- SwiftySwift by adeca
- Geometry by artman
- Swift-Extensions by vitkuzmenko
- SwiftTweetGettr by jmenter
- Basics by dennisweissmann
- toNumber by Mamesoft
- RBResizer by hcatlin
And countless gists and stackoverflow answers.
EZSwiftExtensions is available under the MIT license. See the LICENSE file.
swift, extension, uikit, exswift, foundation, library, framework, tool