// // Extension.swift // Product Calculator // // Created by Suraj Kumar Mandal on 10/11/21. // import UIKit import Foundation extension UIView{ func cardView() -> Void { self.layer.cornerRadius = 10 self.layer.shadowColor = UIColor.gray.cgColor self.layer.shadowOffset = CGSize(width: 0.0, height: 0.0) self.layer.shadowRadius = 6.0 self.layer.shadowOpacity = 0.5 } } extension UITextField { func datePicker(target: T, doneAction: Selector, cancelAction: Selector, datePickerMode: UIDatePicker.Mode = .date) { let screenWidth = UIScreen.main.bounds.width func buttonItem(withSystemItemStyle style: UIBarButtonItem.SystemItem) -> UIBarButtonItem { let buttonTarget = style == .flexibleSpace ? nil : target let action: Selector? = { switch style { case .cancel: return cancelAction case .done: return doneAction default: return nil } }() let barButtonItem = UIBarButtonItem(barButtonSystemItem: style, target: buttonTarget, action: action) return barButtonItem } let datePicker = UIDatePicker(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 216)) datePicker.datePickerMode = datePickerMode //datePicker.maximumDate = Date() // iOS 14 and above if #available(iOS 14, *) { datePicker.preferredDatePickerStyle = .wheels datePicker.sizeToFit() } self.inputView = datePicker let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 44)) toolBar.setItems([buttonItem(withSystemItemStyle: .cancel), buttonItem(withSystemItemStyle: .flexibleSpace), buttonItem(withSystemItemStyle: .done)], animated: true) self.inputAccessoryView = toolBar } } extension UIWindow { static var key: UIWindow? { if #available(iOS 13, *) { return UIApplication.shared.windows.first { $0.isKeyWindow } } else { return UIApplication.shared.keyWindow } } } extension UIViewController { func convertDateFormat(inputDate: String) -> String { let olDateFormatter = DateFormatter() olDateFormatter.dateFormat = "yyyy-MM-dd" let oldDate = olDateFormatter.date(from: inputDate) let convertDateFormatter = DateFormatter() convertDateFormatter.dateFormat = "dd/MM/yyyy" return convertDateFormatter.string(from: oldDate!) } } extension Date { init(dateString:String) { self = Date.iso8601Formatter.date(from: dateString)! } static let iso8601Formatter: ISO8601DateFormatter = { let formatter = ISO8601DateFormatter() formatter.formatOptions = [.withFullDate, .withTime, .withDashSeparatorInDate, .withColonSeparatorInTime] return formatter }() } extension String { func stringBefore(_ delimiter: Character) -> String { if let index = firstIndex(of: delimiter) { return String(prefix(upTo: index)) } else { return "" } } func stringAfter(_ delimiter: Character) -> String { if let index = firstIndex(of: delimiter) { return String(suffix(from: index).dropFirst()) } else { return "" } } }