Skip to content

Instantly share code, notes, and snippets.

View vladimir-bebeshko's full-sized avatar

Vladimir Bebeshko vladimir-bebeshko

  • Zaporizhzhya, Ukraine
View GitHub Profile
@xenodium
xenodium / LinkedText.swift
Created October 31, 2021 14:38 — forked from mjm/LinkedText.swift
Tappable links in SwiftUI Text view
import SwiftUI
private let linkDetector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
struct LinkColoredText: View {
enum Component {
case text(String)
case link(String, URL)
}
@killobatt
killobatt / grammarly-ios-team.md
Last active October 17, 2020 15:09
Як працює Grammarly iOS Team.

Вітаю! Мене звати Славік Володько, я інженер в iOS-команді Grammarly, і я шукаю крутих iOS інженерів в нашу команду.

Супер, а чим ви займаєтесь?

Наша команда працює над Grammarly Keyboard: кастомною клавіатурою, що дозволяє покращувати англомовні тексти у будь-якому додатку на iOS-платформі.

А як ви працюєте? Які бест-практіси юзаєте?

  • У нас у команді немає QA-інженерів. Все, що ти релізиш – одразу йде на продакшн до користувача.
  • Окрім того в нас цілковита відкритість: усі цифри по кожному з продуктів доступні для всіх інженерів, а весь зворотний зв'язок від користувачів стікається в єдине місце, де кожен інженер може його почитати. Таким чином, зв'язок між інженером та користувачем в обидві сторони є максимально коротким.
@noahsark769
noahsark769 / Appending.swift
Created May 10, 2020 21:24
Nested property wrappers with Swift
// https://noahgilmore.com/blog/nesting-property-wrappers
import Cocoa
protocol Appendable {
func appending(string: String) -> Self
}
extension String: Appendable {
func appending(string: String) -> String {
@joncardasis
joncardasis / UIFont+BestFit.swift
Last active May 11, 2023 03:20
Swift Dynamic Font Size for Bounds
extension UIFont {
/**
Will return the best font conforming to the descriptor which will fit in the provided bounds.
*/
static func bestFittingFontSize(for text: String, in bounds: CGRect, fontDescriptor: UIFontDescriptor, additionalAttributes: [NSAttributedStringKey: Any]? = nil) -> CGFloat {
let constrainingDimension = min(bounds.width, bounds.height)
let properBounds = CGRect(origin: .zero, size: bounds.size)
var attributes = additionalAttributes ?? [:]
@danurna
danurna / AttachingObserver.swift
Last active December 19, 2018 09:35
AttachingObserver (Weak KVO)
// Based on https://gist.github.com/joerick/a0b87607e69071fa6a3c
class AttachingObserver: NSObject {
typealias ChangeHandler = (NSObject, [NSKeyValueChangeKey: Any]?) -> Void
weak var observedObject: NSObject?
let keyPath: String
let changeHandler: ChangeHandler
init(observe object: NSObject, keyPath: String, changeHandler: @escaping ChangeHandler) {
self.observedObject = object
self.keyPath = keyPath
@IanKeen
IanKeen / LayoutGuideProvider.swift
Created October 31, 2017 11:57
Extension for constraints pointing to either the view or safeAreaLayoutGuide depending on availability
protocol LayoutGuideProvider {
var leadingAnchor: NSLayoutXAxisAnchor { get }
var trailingAnchor: NSLayoutXAxisAnchor { get }
var leftAnchor: NSLayoutXAxisAnchor { get }
var rightAnchor: NSLayoutXAxisAnchor { get }
var topAnchor: NSLayoutYAxisAnchor { get }
var bottomAnchor: NSLayoutYAxisAnchor { get }
var widthAnchor: NSLayoutDimension { get }
var heightAnchor: NSLayoutDimension { get }
var centerXAnchor: NSLayoutXAxisAnchor { get }
@joshdholtz
joshdholtz / .env
Last active September 27, 2024 08:50
Using Dotenv and environment variables with fastlane
STUFF = this is some stuff
@nolanw
nolanw / URLRequest+MultipartFormData.swift
Last active October 5, 2023 14:31
Swift multipart/form-data
// Public domain - https://gist.github.com/nolanw/dff7cc5d5570b030d6ba385698348b7c
import Foundation
extension URLRequest {
/**
Configures the URL request for `multipart/form-data`. The request's `httpBody` is set, and a value is set for the HTTP header field `Content-Type`.
- Parameter parameters: The form data to set.
@candostdagdeviren
candostdagdeviren / pre-commit
Last active December 27, 2024 14:24
Git Pre-Commit hook with SwiftLInt
#!/bin/bash
#Path to swiftlint
SWIFT_LINT=/usr/local/bin/swiftlint
#if $SWIFT_LINT >/dev/null 2>&1; then
if [[ -e "${SWIFT_LINT}" ]]; then
count=0
for file_path in $(git ls-files -m --exclude-from=.gitignore | grep ".swift$"); do
export SCRIPT_INPUT_FILE_$count=$file_path
@morishin
morishin / 1_playground.swift
Last active February 26, 2021 10:27
Circular UIView with drop shadow (using UIBezierPath)
import UIKit
import PlaygroundSupport
let container = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 200))
container.backgroundColor = .lightGray
let buttonRadius: CGFloat = 50
let buttonSize = CGSize(width: buttonRadius * 2, height: buttonRadius * 2)
let buttonPath = UIBezierPath(arcCenter: CGPoint(x: buttonRadius, y: buttonRadius), radius: buttonRadius, startAngle: 0, endAngle: CGFloat.pi * 2, clockwise: true)