This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class MTCustomPresentationController: UIPresentationController { | |
| let cornerRadius: CGFloat = 16.0 | |
| var dimmingView: UIView? | |
| var presentationWrappingView: UIView? | |
| override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController?) { | |
| super.init(presentedViewController: presentedViewController, presenting: presentingViewController) | |
| presentedViewController.modalPresentationStyle = .custom | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app | |
| if [ "$CONFIGURATION" == "Release" ]; then | |
| rm -Rf $BUILD_APP_DIR/Settings.bundle | |
| fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @propertyWrapper | |
| struct Trimmed { | |
| private(set) var value: String? | |
| var wrappedValue: String? { | |
| get { | |
| return value | |
| } | |
| set { | |
| value = newValue?.trimmingCharacters(in: .whitespacesAndNewlines) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| extension UIView { | |
| func addSubviewsUsingAutoLayout(_ views: UIView ...) { | |
| subviews.forEach { | |
| self.addSubview($0) | |
| $0.translatesAutoresizingMaskIntoConstraints = false | |
| } | |
| } | |
| } | |
| @objc extension NSLayoutAnchor { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| extension UITableView { | |
| func setEmptyMessage(_ message: String) { | |
| let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height)) | |
| messageLabel.text = message | |
| messageLabel.textColor = .black | |
| messageLabel.numberOfLines = 0; | |
| messageLabel.textAlignment = .center; | |
| messageLabel.font = UIFont.preferredFont(forTextStyle: .title3) | |
| messageLabel.sizeToFit() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| private var __maxLengthsForTextView = [UITextView: Int]() | |
| private var kAssociationKeyMaxLengthTextView: Int = 0 | |
| extension UITextView:UITextViewDelegate { | |
| @IBInspectable var maxLength: Int { | |
| get { | |
| if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLengthTextView) as? Int { | |
| return length | |
| } else { | |
| return Int.max |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| private var __maxLengthsForTextField = [UITextField: Int]() | |
| extension UITextField { | |
| //https://stackoverflow.com/a/43099816/3110026 | |
| @IBInspectable var maxLength: Int { | |
| get { | |
| guard let l = __maxLengthsForTextField[self] else { | |
| return 150 // (global default-limit. or just, Int.max) | |
| } | |
| return l | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class MyView: UIView { | |
| override init(frame: CGRect) { | |
| super.init(frame: frame) | |
| fromNib() | |
| } | |
| init() { | |
| super.init(frame: CGRect.zero) | |
| fromNib() | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @propertyWrapper | |
| struct UserDefault<T> { | |
| let key: String | |
| let defaultValue: T | |
| init(_ key: String, defaultValue: T) { | |
| self.key = key | |
| self.defaultValue = defaultValue | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // No Security | |
| { | |
| "rules": { | |
| ".read": true, | |
| ".write": true | |
| } | |
| } |