Skip to content

Instantly share code, notes, and snippets.

View mrugeshtank's full-sized avatar
🎯
Focusing

Mrugesh Tank mrugeshtank

🎯
Focusing
View GitHub Profile
@mrugeshtank
mrugeshtank / HapticHelper.Swift
Last active April 2, 2021 06:43
Haptic feedback generator class
import UIKit
class HapticHelper {
enum HapticType {
case impactLight
case impactMedium
case impactHeavy
case selectionChange
case notificationSuccess
case notificationError
@mrugeshtank
mrugeshtank / MTCustomPresentationController.swift
Created March 1, 2021 00:40
Android bottom sheet like iOS present ViewController
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
}
# 1. Convert the .cer file into a .pem file:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
# 2. Convert the private key’s .p12 file into a .pem file:
$ openssl pkcs12 -nocerts -in PushChatKey.p12 -out PushChatKey.pem
# 3. Finally, combine the certificate and key into a single .pem file
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
# 4. At this point it’s a good idea to test whether the certificate works.
@mrugeshtank
mrugeshtank / removeSettings.sh
Created February 21, 2020 09:56
This script will remove settings bundle from iOS app when configuration is Release
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 February 18, 2020 09:47
by this way you can always get trimmed value no more extension or method required
@propertyWrapper
struct Trimmed {
private(set) var value: String?
var wrappedValue: String? {
get {
return value
}
set {
value = newValue?.trimmingCharacters(in: .whitespacesAndNewlines)
}
@mrugeshtank
mrugeshtank / UITableView+emptyMessage.swift
Created January 23, 2020 02:38
add empty message when there is no data one UITableView
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()
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 January 23, 2020 02:33
UITextField with maxLength property
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 January 23, 2020 02:31
load UIView from nib (xib)
class MyView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
fromNib()
}
init() {
super.init(frame: CGRect.zero)
fromNib()
}
@mrugeshtank
mrugeshtank / UserDefault+PropertyWrapper.swift
Created January 11, 2020 10:10
This piece of code shows how much propertyWrapper can be useful
@propertyWrapper
struct UserDefault<T> {
let key: String
let defaultValue: T
init(_ key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
}