Skip to content

Instantly share code, notes, and snippets.

@ertembiyik
ertembiyik / CustomTabBarController.swift
Created March 28, 2024 12:27
5+ items UITabBarController
final class CustomTabBarController: UITabBarController {
private var customMaxItems: CGFloat {
get {
self.value(forKey: "_customMaxItems") as! CGFloat
}
set {
self.setValue("_customMaxItems", forKey: key)
}
import UIKit
final class TransitionDelegate: NSObject,
UIViewControllerTransitioningDelegate {
private let interactiveController = UIPercentDrivenInteractiveTransition()
private let duration = CATransaction.animationDuration()
func presentationController(forPresented presented: UIViewController,
RickAndMortyService.CharacterRoute.searchBy(id: 2) { character, error in
}
RickAndMortyService.CharacterRoute.searchWith(filters: [.name("morty")]) { characters, error in
}
struct Info: Decodable {
let count: Int
let pages: Int
let next: String?
let prev: String?
}
static func searchBy(id: Int, completion: @escaping(Character?, Error?) -> ()) {
manager.sendRequest(route: Self.id(id), decodeTo: Character.self) { completion($0, $1)}
}
static func searchWith(filters: [Filters], completion: @escaping([Character]?, Error?) -> ()) {
struct SearchWithFiltersResponse: Decodable {
let info: Info
let results: [Character]
}
struct Character: Codable {
let id: Int
let name: String
let status: String
let url: String
let species: String
let type: String
let gender: String
}
enum RickAndMortyService {
static let baseURL = "https://rickandmortyapi.com/api/"
}
enum RickAndMortyService {
static let baseURL = "https://rickandmortyapi.com/api/"
static let manager = NetworkManager(baseURL: baseURL)
}
extension RickAndMortyService {
enum CharacterRoute: RouteProtcol {
case id(Int)
case base([Filters])
var stringValue: String {
switch self {
case .id(let id):
return "character/\(id)"
protocol RouteProtocol {
var stringValue: String { get }
var method: String { get }
}