Esqarrouth/EZSwiftExtensions
Esqarrouth/EZSwiftExtensions has 2,964 GitHub stars and 375 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 18:03 UTC. Last push 2024-04-05.
:smirk: How Swift standard types and classes were supposed to work.
What you can do
- 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
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalEZSwiftExtensions

How Swift standard types and classes were supposed to work. A collection of useful extensions for the Swift Standard Library, Foundation, and UIKit.
Example Usage
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")
}
Installation
Manually (~10 seconds)
- Download and drop '/Sources' in your project.
- Congratulations!
Install via CocoaPods (~10 seconds)
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"
Requirements
- Swift 2 or later
Possible features
- 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
TODOs in source code. - OSX compatibility and add here https://github.com/AndrewSB/awesome-osx
Sources Used
- 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.
License
EZSwiftExtensions is available under the MIT license. See the LICENSE file.
Keywords
swift, extension, uikit, exswift, foundation, library, framework, tool
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,078 starspublic-apis/public-apis
A collective list of free APIs
497,322 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
443,677 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,218 stars