Skip to content

Instantly share code, notes, and snippets.

View MickhailP's full-sized avatar
🎯
Focusing on a issue

Mikhail Perevozchikov MickhailP

🎯
Focusing on a issue
View GitHub Profile
@MickhailP
MickhailP / EndpointProtocol.swift
Created January 14, 2023 11:47
NetworkEndpoint
protocol Endpoint {
var scheme: String { get }
var host: String { get }
var path: String { get }
var method: RequestMethod { get }
var header: [String: String]? { get }
var body: [String: String]? { get }
}
extension Endpoint {
@MickhailP
MickhailP / ChangeAppearance.swift
Created March 5, 2023 10:16
ChangeNavBarAppearance
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
if let navController = window!.rootViewController as? UINavigationController {
navController.delegate = self
let appearance2 = UINavigationBarAppearance()
appearance2.backgroundColor = .systemBlue
appearance2.titleTextAttributes = [.foregroundColor: UIColor.white]
appearance2.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
@MickhailP
MickhailP / Validation.swift
Created March 15, 2023 19:10
Email and password validation
extension String {
var isValidEmail: Bool {
let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailFormat)
return emailPredicate.evaluate(with: self)
}
var isValidPassword: Bool {
//Regex restricts to 8 character minimum, 1 capital letter, 1 lowercased letter, 1 number
let passwordFormat = "(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}"
enum ScreenSize {
static let width = UIScreen.main.bounds.size.width
static let height = UIScreen.main.bounds.size.height
static let maxLength = max(ScreenSize.width, ScreenSize.height)
static let minLength = min(ScreenSize.width, ScreenSize.height)
}
enum DeviceTypes {
static let idiom = UIDevice.current.userInterfaceIdiom
@MickhailP
MickhailP / SyncOnMainThread.swift
Created May 3, 2023 10:23
sync() on MainThread
func syncOnMainThread<T>(execute block: () throws -> T) rethrows -> T {
if Thread.isMainThread {
return try block()
}
return DispatchQueue.main.sync(execute: block)
}
extension ViewController {
private func setNotificationForKeyboardAppearance() {
NotificationCenter.default.addObserver(
self,
selector: #selector(self.keyboardWillShow),
name: UIResponder.keyboardWillShowNotification,
object: nil)
NotificationCenter.default.addObserver(