Helpers and extensions for Swift
By Xmartlabs SRL.
XLSwiftKit is a collection of helpers and extensions we use internally. It is a constantly being updated with new snippets. Feel free to use it or to contribute. You can see a list of helper functions and extensions here. Please keep that list updated if you add new functions
import XLSwiftKit
// your code using XLSwiftKit
Before contribute check the CONTRIBUTING file for more info.
If you use XLSwiftKit in your app, We would love to hear about it! Drop us a line on twitter.
Follow these 3 steps to run Example project: Clone XLSwiftKit repository, open XLSwiftKit workspace and run the Example project.
CocoaPods is a dependency manager for Cocoa projects.
To install XLSwiftKit, simply add the following line to your Podfile:
pod 'XLSwiftKit', '~> 3.2.0'
Carthage is a simple, decentralized dependency manager for Cocoa.
To install XLSwiftKit, simply add the following line to your Cartfile:
github "xmartlabs/XLSwiftKit" ~> 3.2.0
This is a list of the helper functions and extensions implemented in this pod.
func toJSON() -> AnyObject?
: serializes a NSData object to JSON representationfunc isOver18Years() -> Bool
: returns if a date is over 18 years agofunc monthName() -> String
: returns the month of a date in MMMM
formatfunc year() -> String
: returns the year of a date in yyyy
formatfunc day() -> String
: returns the day of a date in dd
formatclass func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController?
: returns the top most view controller in the view hierarchy considering a base rootViewController.static func changeRootViewController(rootViewController: UIViewController, animated: Bool = true, from: UIViewController? = nil, completion: ((Bool) -> Void)? = nil)
: changes the rootViewController of the applications main windowstatic func changeRootViewControllerAfterDismiss(from: UIViewController? = nil, to: UIViewController, completion: ((Bool) -> Void)? = nil)
: Same as the previous one but dismisses the current view controller before changing root view controllerstatic func makePhoneCall(phoneNumber: String) -> Bool
: Creates a NSURL with the phoneNumber parameter and opens the URL if possible.var bundleIdentifier: String
var buildVersion: String
var appVersion: String
var bundleName: String
func setTransparent(transparent: Bool)
: Makes the navigationBar transparent or notfunc shake(duration: CFTimeInterval = 0.3)
: Executes a shake animation on a viewfunc spin(duration: CFTimeInterval, rotations: CGFloat, repeatCount: Float)
: Spins a view around its z axisstatic public func verticalStackView(views: [UIView], alignLeading: Bool = true, alignTrailing: Bool = true, frame: CGRect? = nil, width: CGFloat = UIScreen.mainScreen().bounds.width) -> UIView
: returns a view containing the views passed as parameter as if it was a vertical stack view (putting all views vertically one after the other). Thought to be a iOS 8 alternative to real UIStackViewsfunc showError(title: String, message: String? = nil)
: shows an UIAlertController alert with error title and messagefunc currencyString() -> String?
: Returns a formatted currency String from an Int or Double. Currency formatter used is defined under Constants.Formatters.currencyFormatter
func isValidAsEmail() -> Bool
: Returns if a string is valid as emailfunc isValidAsPhone() -> Bool
: Returns if a string is valid as phone numberfunc isNumberString() -> Bool
: Returns if a string is composed just of numbers or '-' symbolfunc findFirstNumberInString() -> String?
: Returns the first number in a String if foundfunc renderedHeightWithFont(font: UIFont, width: CGFloat) -> CGFloat
: Return the height necessary for a text given a width and font size. Same as heightForString
extension on UIFontfunc getFirstAndLastName() -> (String,String)?
: Parses a first and a last name from a String. Takes last whitespace as separator for these values.String
type to ParametrizedString
protocol and specifying a parameter format like "{i}"
:
func parametrize(parameters: CustomStringConvertible...) -> String
: Replace "{i}"
substring with the i-th element of parameters
. For example: "Hey {0}! It's been {1} years!".parametrize("Arnold", 3)
gives you "Hey Arnold! It's been 3 years!"
parametrize(withDictonary dictonary: [Int: CustomStringConvertible]) -> String
: Same behaviour as above but specifying the parameters as a dictonary.init(color: UIColor, size: CGSize = CGSize(width: 1, height: 1))
init(view: UIView)
init(image: UIImage, scaledToSize: CGSize)
class func imageWithColor(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) -> UIImage
class func imageWithView(view: UIView) -> UIImage
class func imageWithImage(image: UIImage, scaledToSize size: CGSize) -> UIImage
: Returns a new image scaled to desired sizefunc imageScaledToSize(size: CGSize) -> UIImage
: Same as previousfunc saveToCameraRoll(completion: ((succeded: Bool) -> Void)? = nil)
: Saves an image to Saved Photos Albumfunc setFooterWithSpacing(view: UIView)
: Adds a footer to a tableView that covers the rest of the screen.func reloadDataAnimated(duration: NSTimeInterval = 0.4, completion: (() -> ())?)
: Performs a reloadData
call using a cross-dissolve transition.mutating func merge(dict: [Key: Value])
: Merges two dictionaries of the same Key and Value typeinit(red: Int, green: Int, blue: Int)
: Creates a color from RGB values between 0 and 255init(netHex:Int)
: Creates a color from a Hexa stringfunc maxScreenLength() -> CGFloat
: Returns the maximum screen length of the current deviceThe following helpers return if the device is of certain type depending on the devices maxScreenLength
func iPhone4() -> Bool
func iPhone5() -> Bool
func iPhone6() -> Bool
func iPhone6Plus() -> Bool
Other helpers:
fontSizeForDevice(size: CGFloat, q6: CGFloat = 0.94, q5: CGFloat = 0.86, q4: CGFloat = 0.80) -> CGFloat
: Returns the suggested font size for every device (iPhone only).func heightForString(string: NSString, width: CGFloat) -> CGFloat
: Return the height necessary for a text given a width and font size. Same as renderedHeightWithFont
extension on Stringfunc suggestedVerticalConstraint(value: CGFloat, q6: CGFloat = 0.9, q5: CGFloat = 0.77, q4: CGFloat = 0.65) -> CGFloat
: Scale a value for a vertical constraint constant depending on the current device. Works for iPhone apps only. All coefficients have reasonable default values for vertical constraintsfunc suggestedHorizontalConstraint(value: CGFloat, q6: CGFloat = 0.9, q5: CGFloat = 0.77, q4: CGFloat = 0.77) -> CGFloat
: Scale a value for a horizontal constraint constant depending on the current device. Works for iPhone apps only. All coefficients have reasonable default values for horizontal constraintsThis is a publis struct with functions inside:
static func removeBackImageIndicatorFromNavigationBar()
: Removes the navigation bars backIndicator imagestatic let mainQueue: DispatchQueue
: Returns the main queuestatic let backgroundQueue: DispatchQueue
: Returns a background queuestatic func delay(_ delay: Double, block: @escaping () -> ())
: Executes a block after a given delaystatic func runOnMainThread(_ block: @escaping () -> ())
: Executes a block on the main threadstatic func runOnBackgroundThread(_ block: @escaping () -> ())
: Executes a block on the background queuestatic func synced(_ lock: AnyObject, closure: () -> ())
: Locks an objectBox is a Wrapper: e.g. Used to wrap any structs in a class so that they can be used where AnyObject is required
RoundedView
, RoundedImageView
and RoundedButton
are subclasses of UIView
, UIImageView
and UIButton
with a rounded appearance.GradientView
renders a gradient from an array of colors and a direction specified by the colors
and direction
properties. It spreads the colors evenly through the space.OwnerView
is intended to wrap xib views in order to reuse them in storyboards and also instantiate them in code.
OwnerView
func viewForContent() -> UIView?
to provide the xib's view.func setup()
to initialize the view. Your xib's view will be accessible through the contentView
property.public func JSONStringify(value: AnyObject, prettyPrinted: Bool = true) -> String
: Converts a JSON object to a printable StringThis can be found in the CHANGELOG.md file.