Skip to content

Instantly share code, notes, and snippets.

import UIKit
@IBDesignable
class LayoutableButton: UIButton {
enum VerticalAlignment: String {
case center, top, bottom, unset
}
enum HorizontalAlignment: String {
case center, left, right, unset
extension UISearchBar {
public var textField: UITextField? {
if #available(iOS 13, *) {
return searchTextField
}
let subViews = subviews.flatMap { $0.subviews }
guard let textField = (subViews.filter { $0 is UITextField }).first as? UITextField else {
return nil
}
return textField
//
// ViewController.swift
// FileManagerMethods
//
// Created by Steven Curtis on 08/10/2019.
// Copyright © 2019 Steven Curtis. All rights reserved.
//
import UIKit
@paradoxeth
paradoxeth / debounceuibutton.swift
Created September 23, 2019 06:06
Debounce UIButton
extension UIButton {
/// Default debounce delay for UIButton taps. Allows delay to be updated globally.
static var debounceDelay: Double = 0.5
/// Debounces button taps with the specified delay.
func debounce(delay: Double = UIButton.debounceDelay) {
isEnabled = false
let deadline = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: deadline) { [weak self] in
@paradoxeth
paradoxeth / uniquiemap.swift
Created September 23, 2019 06:06
UniquieMap
public func uniqueMap<T: Equatable>(_ transform: (Iterator.Element) throws -> T) rethrows -> [T] {
let count: Int = numericCast(self.count)
if isEmpty {
return []
}
var result = ContiguousArray<T>()
result.reserveCapacity(count)