Skip to content

Instantly share code, notes, and snippets.

View denandreychuk's full-sized avatar
🐥
Hello my friend

Den Andreychuk denandreychuk

🐥
Hello my friend
View GitHub Profile
@denandreychuk
denandreychuk / carousel.swift
Last active February 16, 2025 06:47
Implementation of carousel in SwiftUI
@denandreychuk
denandreychuk / build.sh
Last active May 25, 2025 21:27
Скрипт для создания XCFramework
# Основы Cocoapods 04: Как создать библиотеку без исходного кода?
# https://youtu.be/LjPBxPywGoI
# zip -r PMComplitedUserPrinter.zip LICENSE PMUserPrinter.xcframework
xcodebuild archive \
-workspace PMUserPrinter.xcworkspace \
-scheme PMUserPrinter \
-sdk iphoneos \
-archivePath "xcframework_archives/ios_devices.xcarchive" \
@denandreychuk
denandreychuk / PMUserPrinter.podspec
Created March 24, 2022 17:50
Базовый Podspec файл
# Основы Cocoapods 02: Как создать публичную библиотеку
# https://youtu.be/wUjGImmGsVc
Pod::Spec.new do |s|
s.name = 'PMUserPrinter'
s.version = '1.0.0'
s.license = 'MIT'
s.summary = 'Test framework'
s.homepage = 'https://github.com/denandreychuk/PMUserPrinter'
s.authors = { 'Den Andreychuk' => 'business@denandreychuk.com' }
@denandreychuk
denandreychuk / async.swift
Created October 6, 2021 10:59
Асинхронные скрипты на Swift | https://t.me/BlogSwift
func someAsyncFunc(result: @escaping (Result<Void, Error>) -> Void) {
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) {
result(.success(()))
}
}
let runner = SwiftScriptRunner()
runner.lock()
someAsyncFunc { result in
@denandreychuk
denandreychuk / UITableViewExtensions.swift
Created September 10, 2021 17:54
Как использовать tableHeaderView вместе с auto-layout? | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
extension UITableView {
func setTableHeaderView(headerView: UIView) {
tableHeaderView = headerView
headerView.translatesAutoresizingMaskIntoConstraints = false
headerView.widthAnchor.constraint(equalTo: self.widthAnchor).isActive = true
headerView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
@denandreychuk
denandreychuk / FailableDecodable.swift
Last active September 1, 2021 16:57
Опциональное декодирование элементов массива с помощью Decodable | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
struct FailableDecodable<Base : Decodable> : Decodable {
let base: Base?
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
self.base = try? container.decode(Base.self)
}
@denandreychuk
denandreychuk / IntExtensions.swift
Created August 17, 2021 21:13
Как сделать аббревиатуру для числа? | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
extension Int {
var abbreviated: String {
"KMBTQ".enumerated().reversed().reduce(nil as String?) { result, abbreviation in
let factor = Double(self) / pow(10, Double(abbreviation.offset + 1) * 3)
let format = (factor.truncatingRemainder(dividingBy: 1) == 0 ? "%.0f%@" : "%.1f%@")
return result ?? (factor > 1 ? String(format: format, factor, String(abbreviation.element)) : nil)
} ?? String(self)
}
@denandreychuk
denandreychuk / appdelegate.swift
Last active August 12, 2021 12:30
Улучшаем состояние AppDelegate с помощью сервисов | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
@main
class AppDelegate: PluggableApplicationDelegate {
// MARK: Services
override var services: [ApplicationService] {
[
FirebaseService(),
@denandreychuk
denandreychuk / UIImageExtensions.swift
Last active August 12, 2021 12:30
Как создать UIImage со сплошной заливкой и заданным размером? | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
extension UIImage {
convenience init(color: UIColor, size: CGSize) {
UIGraphicsBeginImageContextWithOptions(size, false, 1)
defer {
UIGraphicsEndImageContext()
}
@denandreychuk
denandreychuk / letvar.swift
Created August 5, 2021 17:10
Различия между let и var | https://t.me/BlogSwift
// СВИФТЕР | Блог про Swift | t.me/BlogSwift
// Константа
let maxPasswordLenght = 64
// Переменная
var currentPasswordLenght = 12