Skip to content

Instantly share code, notes, and snippets.

Avatar
🎯
Focusing

Mrugesh Tank mrugeshtank

🎯
Focusing
View GitHub Profile
View KeyboardAppearListener.swift
import Foundation
class KeyboardAppearListener {
private var showKeyboard: NotificationToken?
private var hideKeyboard: NotificationToken?
private weak var viewController: UIViewController?
private var windowSafeArea: CGFloat = 0
private var windowsSafeAreaWereAdded = false
@mrugeshtank
mrugeshtank / MTCustomPresentationController.swift
Created Mar 1, 2021
Android bottom sheet like iOS present ViewController
View MTCustomPresentationController.swift
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
}
@mrugeshtank
mrugeshtank / removeSettings.sh
Created Feb 21, 2020
This script will remove settings bundle from iOS app when configuration is Release
View removeSettings.sh
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
if [ "$CONFIGURATION" == "Release" ]; then
rm -Rf $BUILD_APP_DIR/Settings.bundle
fi
@mrugeshtank
mrugeshtank / Trimmed+propertyWrapper.swift
Created Feb 18, 2020
by this way you can always get trimmed value no more extension or method required
View Trimmed+propertyWrapper.swift
@propertyWrapper
struct Trimmed {
private(set) var value: String?
var wrappedValue: String? {
get {
return value
}
set {
value = newValue?.trimmingCharacters(in: .whitespacesAndNewlines)
}
@mrugeshtank
mrugeshtank / ConstraintsExtesnions.swift
Created Feb 12, 2020
extension for constraints for applying programmatically in swift 5.1
View ConstraintsExtesnions.swift
extension UIView {
func addSubviewsUsingAutoLayout(_ views: UIView ...) {
subviews.forEach {
self.addSubview($0)
$0.translatesAutoresizingMaskIntoConstraints = false
}
}
}
@objc extension NSLayoutAnchor {
@mrugeshtank
mrugeshtank / UITableView+emptyMessage.swift
Created Jan 23, 2020
add empty message when there is no data one UITableView
View UITableView+emptyMessage.swift
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()
View UITextView+maxLengthAndPlaceHolder.swift
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
@mrugeshtank
mrugeshtank / UITextField+maxLength.swift
Created Jan 23, 2020
UITextField with maxLength property
View UITextField+maxLength.swift
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
}
@mrugeshtank
mrugeshtank / MyView.swift
Created Jan 23, 2020
load UIView from nib (xib)
View MyView.swift
class MyView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
fromNib()
}
init() {
super.init(frame: CGRect.zero)
fromNib()
}