Skip to content

Instantly share code, notes, and snippets.

View stleamist's full-sized avatar

Dongkyu Kim (Max.kim) stleamist

View GitHub Profile
import Foundation
public extension Encodable {
func jsonString(options: JSONEncoder.OutputFormatting = .prettyPrinted) -> String? {
let encoder = JSONEncoder()
encoder.outputFormatting = options
guard let jsonStringData = try? encoder.encode(self) else {
return nil
}
import UIKit
extension UIDevice {
var hasHomeIndicatorArea: Bool? {
// AppDelegate에서 window의 makeKeyAndVisible()이 호출되기 전에는 keyWindow 프로퍼티가 nil 값을 반환하므로,
// 그 전에는 AppDelegate window 프로퍼티를 가져오도록 한다.
guard let window: UIWindow = UIApplication.shared.keyWindow ?? UIApplication.shared.delegate?.window ?? nil else {
return nil
}
let bottomSafeAreaInsets = window.safeAreaInsets.bottom
import sys, plistlib, json, re, subprocess
from datetime import datetime as dt
from datetime import timedelta
import urllib.parse as up
def dequote(path):
if (path[0] == path[-1]) and path.startswith(("'", '"')):
return path[1:-1]
else:
return path
import UIKit
extension UIView {
func layerImage() -> UIImage {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
let image = renderer.image { context in
layer.render(in: context.cgContext)
}
return image
}
import Foundation
extension URLComponents {
var fragmentItems: [URLQueryItem]? {
get {
var components = URLComponents()
components.query = fragment
return components.queryItems
}
set {
import UIKit
extension UIImage {
func resizeCanvas(size canvasSize: CGSize, color canvasColor: UIColor = .clear) -> UIImage {
let renderer = UIGraphicsImageRenderer(size: canvasSize)
let resizedImage = renderer.image { (context) in
canvasColor.setFill()
context.fill(CGRect(origin: .zero, size: canvasSize))
Array.prototype.replace = function(replacingArray, startIndex = 0) {
const replacedArray = this.slice()
Array.prototype.splice.apply(replacedArray, [startIndex, replacingArray.length].concat(replacingArray))
return replacedArray
}
import UIKit
extension UITableViewCell {
static var reuseIdentifier: String { String(describing: self) }
}
import UIKit
extension UIColor {
static func dynamicColor(light: UIColor, dark: UIColor) -> UIColor {
return UIColor { (traitCollection) -> UIColor in
if traitCollection.userInterfaceStyle != .dark {
return light
} else {
return dark
}
import UIKit
let disclosureIndicatorImage = UIImage(systemName: "chevron.right")?
.applyingSymbolConfiguration(.init(scale: .small))?
.applyingSymbolConfiguration(.init(weight: .semibold))?
.withTintColor(UIColor.systemGray.withAlphaComponent(0.5), renderingMode: .alwaysOriginal)
let disclosureIndicator = UIImageView(image: disclosureIndicatorImage)