Some useful Foundation and UIKit Extensions.
Will be expanded over time.
- macOS 10.10+
- iOS 9.0+
- tvOS 9.0+
Add the following to the dependencies of your Package.swift
:
.package(url: "https://github.com/FelixHerrmann/FHExtensions.git", from: "x.x.x")
Download the Sources folder and drag it into you project.
This subscript checks, if the index is in range.
Getting array values works like that:
let array = [0, 1, 2]
print(array[1]) // 1
print(array[safe: 1]) // Optional(1)
print(array[3]) // Fatal error: Index out of range
print(array[safe: 3]) // nil
Setting array values works also safely:
var array = [0, 1, 2]
array[safe: 2] = 3
print(array) // [0, 1, 3]
array[safe: 3] = 4
print(array) // [0, 1, 3]
The values for the CFBundleShortVersionString
and CFBundleVersion
key in the info dictionary.
Convenience properties for CGRect
coordinates.
These properties also contains setters which will recreate the frame entirely.
This initializer can create a Date
object by date components. It can fail if a date could not be found which matches the components.
let date = Date(23, 2, 1999)
let dateWithTimeAndTimeZone = Date(23, 2, 1999, hour: 9, minute: 41, second: 0, timeZone: TimeZone(secondsFromGMT: 0))
The time values and time zone are optional.
An ISO 8601 DateDecodingStrategy
with fractional seconds.
Something like 1999-02-23T09:41:00.000Z
will work with the decoder.
An ISO 8601 DateEncodingStrategy
with fractional seconds.
Something like 1999-02-23T09:41:00.000Z
will be the output from the encoder.
A copy of the string where the first letter is capitalized.
These properties are based on the getRed(_:green:blue:alpha)
method.
This initializer can create a UIColor
-object by a hex string. It can fail if the string has not the correct format.
It allows hex strings with and without alpha, the hash symbol is not required and capitalization does not matter.
let yellow: UIColor? = UIColor(hex: "#ffff00ff")
This method creates a hex string from the color instance.
let yellow = UIColor(red: 1, green: 1, blue: 0, alpha: 1)
let hexString: String = yellow.createHex(alpha: true)
print(hexString) // "#ffff00ff"
With UIDevice.current.modelIdentifier
you are able to get the model identifier of the current device as String
.
This works also on Mac (Catalyst).
A concrete subclass of UIPanGestureRecognizer that cancels if the specified direction does not match.
let directionalPanRecognizer = UIDirectionalPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
directionalPanRecognizer.direction = .vertical
view.addGestureRecognizer(directionalPanRecognizer)
The
touchesMoved(_:with:)
is not called on trackpad and mouse events. Use theUIGestureRecognizerDelegate.gestureRecognizerShouldBegin(_:)
instead if theallowedScrollTypesMask
is set toUIScrollTypeMask.discrete
orUIScrollTypeMask.continuous
.
These properties are based on the getRed(_:green:blue:alpha)
method.
This initializer can create an NSColor
-object by a hex string. It can fail if the string has not the correct format.
It allows hex strings with and without alpha, the hash symbol is not required and capitalization does not matter.
let yellow: NSColor? = NSColor(hex: "#ffff00ff")
This method creates a hex string from the color instance.
let yellow = NSColor(red: 1, green: 1, blue: 0, alpha: 1)
let hexString: String = yellow.createHex(alpha: true)
print(hexString) // "#ffff00ff"
FHExtensions is available under the MIT license. See the LICENSE file for more info.