SwifterSwift
A handy collection of more than 365 native Swift 3 extensions to boost your productivity.
一个方便的集合超过365本地Swift 3扩展,开题报告,以提高您的生产力。
v1.3 adds more than 90 new extensions making it the widest extensions library available online for Swift 3 with extensions for more than 36 type.
This is the biggest update since library launch! we're so excited
1.3添加了超过90个新扩展,开题报告,使其成为在线的适应面最广的扩展库,用于具有超过36种类型的扩展的Swift 3。我们很兴奋。
Requirements: 环境需求Xcode 8 (or later) with Swift 3.
This library is made for iOS 8 or later, however most of the extensions should work on watchOS, tvOS, and macOS
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapodsTo integrate SwifterSwift into your Xcode project using CocoaPods, specify it in your Podfile:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! target '<Your Target Name>' do pod 'SwifterSwift' endThen, run the following command:
$ pod installManuallyAdd the extensions folder to your Xcode project to use all extensions, or a specific extension.
List Of Extensions Extensions 列表Array extensions
Bool extensions
Character extensions
Data extensions
Date extensions
Dictionary extensions
Double extensions
Float extensions
Int extensions
String extensions
SwifterSwift
CGFloat extensions
CGPoint extensions
CGSize extensions
NSAttributedString extensions
UIAlertController extensions
UIBarButtonItem extensions
UIButton extensions
UICollectionView extensions
UIColor extensions
UIImage extensions
UIImageView extensions
UILabel extensions
UINavigationBar extensions
UINavigationController extensions
UINavigationItem extensions
UISearchBar extensions
UISegmentedControl extensions
UISlider extensions
UISwitch extensions
UITabBar extensions
UITableView extensions
UITextField extensions
UITextView extensions
UIView extensions
UIViewController extensions
How cool is this?SwifterSwift is a library of over 365 properties and methods, designed to extend Swift's functionality and productivity, staying faithful to the original API design guidelines of swift 3.
Here are some examples:
Array Extensions:// Remove duplicates from array [1, 2, 3, 1, 3].removeDuplicates() -> [1, 2, 3] // Return all indexes of specified item ['h', 'e', 'l', 'l', 'o'].indexes(of: 'l') -> [2, 3] // Shuffle array ['h', 'e', 'l', 'l', 'o'].shuffled = ['e', 'l', 'o', 'l', 'h'] // Return random item from array [1, 2, 3, 4, 5].randomItem -> 3 // and many others!Date Extensions:// Get and set components from date with ease date.hour = 14 // Check if date is in today Date().isInToday -> true // Add 1 month to current date Date().add(.month, value: 1) // Return date at the beginning of current day Date().beginning(of .day) // Return date at the end of current month Date().end(of .month) // Check if date is in current calendar unit Date().isInCurrent(.month) -> true // Return iso8601 string for date Date().iso8601String -> '2016-08-23T21:26:15.287Z' // Create date from iso8601 string let date = Date(iso8601String: '2016-08-23T21:26:15.287Z') // Create date from DateComponents let date = Date(year: 2016, month: 8, day: 15) // other components set to current let date = Date(hour: 9, minute: 18, second: 1) // other components set to current // Represent date as a string with ease Date().dateString(ofStyle: .medium) -> 'Aug 26, 2016' Date().timeString(ofStyle: .short) -> '12:55 AM' Date().dateTimeString() -> 'Aug 26, 2016, 12:55:24 AM' // and many others!String Extensions:// Return count of substring in string 'hello world'.count(of 'o', caseSensitive: false) -> 2 // Return an array of strings separated by given string 'hello world'.split(by: ' ') -> ['hello', 'world'] // Return string with no spaces or new lines in beginning and end '\n Hello '.trimmed -> 'Hello' // Return most common character in string 'swifterSwift is making swift more swifty'.mostCommonCharacter -> 'i' // Returns CamelCase of string 'Some variable nAme'.camelCased -> 'someVariableName' // Check if string is in valid email format 'omaralbeik@gmail.com'.isEmail -> true // Check if string contains at least one letter and one number '123abc'.isAlphaNumeric -> true // Reverse string '123abc'.reverse() -> 'cba321' // Return latinized string 'Hèllö Wórld!'.latinize() -> 'Hello World!' // Create random string of length String.random(ofLength: 10) -> 'AhEju28kNl' // Check if string contains one or more instance of substring 'Hello World!'.contain('o', caseSensitive: false) -> true // Check if string contains one or more emojis 'string with emojis '.containEmoji -> true // Convert string to numbers '12.12'.toDouble -> 12.12 // Encode and decode URLs 'it's easy to encode strings'.urlEncoded -> 'it's%20easy%20to%20encode%20strings' 'it's%20easy%20to%20encode%20strings'.urlDecoded -> 'it's easy to encode strings' // Encode and decode base64 'Hello World!'.base64Encoded -> 'SGVsbG8gV29ybGQh' 'SGVsbG8gV29ybGQh'.base64Decoded = 'Hello World!' // Truncate strings with a trailing 'This is a very long sentence'.truncated(toLength: 14, trailing: = '...') -> 'This is a very...' // Repeat a string n times 's' * 5 -> 'sssss' // NSString has never been easier let boldString = 'this is string'.bold.colored(with: .red) // and many others!Dictionary Extensions:let dict = ['id': 1, 'Product-Name': 'SwifterSwift'] // Check if key exists in dictionary. dict.has(key: 'id') -> true // Lowercase all keys in dictionary. dict.lowercaseAllKeys() -> ['id': 1, 'product-name': 'SwifterSwift'] // Create JSON Data and string from a dictionary let json = dict.jsonString(prettify: true) // and many others!Number Types Extensions:// Return square root of a number √ 9 = 3 // Return square power of a number 5 ** 2 = 25 // Return a number plus or minus another number 5 ± 2 = (3, 7) // Return random number in range Int.randomBetween(min: 1, max: 10) = 6 // Return roman numeral for a number 134.romanNumeral = 'CXXXIV' // and many others!UI Extensions#p#分页标题#e#SwifterSwift has many great UI extensions:
UIColor Extensions:// Create new UIColor for RGB values let color = UIColor(red: 121, green: 220, blue: 164) // Create new UIColor for a hexadecimal value let color = UIColor(hex: 0x45C91B) // Blend two colors with ease UIColor.blend(UIColor.red, intensity1: 0.5, with: UIColor.green, intensity2: 0.3) // Return hexadecimal value string UIColor.red.hexString -> '#FF0000' // Use Google Material design colors with ease let indigo = UIColor.material.indigo // Return brand colors from more than 30 social brands let facebookColor = UIColor.social.facebook // and many others!UIView Extensions // Set borderColor, borderWidth, cornerRadius, shadowColor, and many other properties from code or storyboard view.cornerRadius = 30 // Set some or all corners radiuses of view. view.roundCorners([.bottomLeft, .topRight], radius: 30) // Add shadow to view view.addShadow(ofColor .black, radius: 3, opacity: 0.5) // Animate view with completion view.fadeIn(duration: 1, completion:((Bool) -> Void)?) view.fadeOut(duration: 1, completion:((Bool) -> Void)?) view.rotate(byAngle 90, ofType type: .degrees, animated: true, duration: 1, completion: { print('done') }) view.rotate(toAngle -3, ofType type: .radians, animated: false, duration: 1, completion: nil) view.scale(byOffset: 4, animated: true, duration:1) view.shake(direction: .horizontal, duration: 1, animationType: .easeOut) // save screenshot of a view let image = view.screenShot // and many others!CGPoint Extensions// Get distance from another CGPoint. point1.distance(from point2) = 12.45 Multiply a CGPoint with a scalar result = 5 * point // and many others!UIAlertController Extensions// Create a new alert controller from string or Error let alert = UIAlertController(title: 'Couldn't sign in', message: 'Invalid username or password!') let alert = UIAlertController(title: 'Error', error: Error) // show alert with ease alert.show() // and many others!UIButton Extensions // Set title, title color and image for all states at once! button.setTitleForAllStates('Login') button.setTitleColorForAllStates(UIColor.blue) button.setImageForAllStates(UIImage(named: 'login')) // or set each of them from code or storyboard button.titleForHighlighted = 'Login' // and many others!UIImage Extensions// Crop images let croppedImage = image.cropped(to CGRect) // Create UIImage from color let image = UIImage(color: UIColor, size: CGSize) // scale to fit width or height let scaledImage = image.scaled(toHeight: CGFloat) let scaledImage = image.scaled(toWidth: CGFloat) // Compress images let compressedImage = image.compressd(quality: 0.3) // get image size image.kilobytesSize = 114 // and many others!UIImageView Extensions// Download an image from URL in background imageView.download(from url, contentMode: .scaleAspectFit, placeHolder: UIImage?) // Blur image view imageVuew.blur(withStyle: .light) // and many others!UINavigationBar Extensions// Change navigation bar font and color navbar.setTitleFont(UIFont, with color: UIColor.black) // and many others!UINavigationController Extensions// Pop ViewController with completion handler. navController.popViewController(completion: (()->Void)?) // Push ViewController with completion handler. navController.pushViewController(UIViewController, completion: (()->Void)?) // and many others!UITableView Extensions// Return index path for last row in section. tableView.indexPathForLastRow(in section: 2) // Scroll to bottom or top of TableView. tableView.scrollToBottom(animated: true) tableView.scrollToTop(animated: true) // and many others!Misc Extensions// Check if app is running in debugging mode SwifterSwift.isInDebuggingMode // Check if app is running on simulator SwifterSwift.isRunningOnSimulator // Detect screenshots SwifterSwift.didTakeScreenShot { print('User did take a screenshot!') } // and many others!