Skip to content

Instantly share code, notes, and snippets.

View revblaze's full-sized avatar

Justin Bush revblaze

View GitHub Profile
@revblaze
revblaze / MenuViewController.swift
Last active April 6, 2020 23:02
Protocols & Delegation in Swift (Sample)
protocol Customizable {
func hideMenu()
func isDarkModeActive()
func setDarkMode(_ mode: Bool)
}
class MenuViewController: NSViewController {
weak var delegate: Customizable?
override func viewDidLoad() {
@revblaze
revblaze / WKExtensions.swift
Last active May 25, 2020 18:13
WebKit Extensions: Quick, easy and useful
import WebKit
extension WKWebView {
/// Quick and short load URL String in a WKWebView
func load(_ string: String) {
if let url = URL(string: string) {
let request = URLRequest(url: url)
load(request)
}
}
@revblaze
revblaze / PathExtensions.swift
Last active May 25, 2020 18:14
Paths & URLs: Quick, easy and useful extensions
extension String {
/// Quick convert `String` to `URL`
/// # Usage
/// let url = String.toURL
func toURL() -> URL {
return URL(string: self)!
}
/// Get the name of a file, from a `Sring`, without path or file extension
/// # Usage
/// let path = "/dir/file.txt"
@revblaze
revblaze / Observers.swift
Last active August 26, 2020 15:29
WebKit Observers
// WebView Observers
var webViewURLObserver: NSKeyValueObservation? // Observer for URL
var webViewTitleObserver: NSKeyValueObservation? // Observer for Page Title
var webViewProgressObserver: NSKeyValueObservation? // Observer for Load Progress
override func viewDidLoad() {
super.viewDidLoad()
// OBSERVER: WebView URL
webViewURLObserver = webView.observe(\.url, options: .new) { [weak self] webView, change in
@revblaze
revblaze / URLObserver.swift
Last active May 25, 2020 18:04
WebKit Observer: URL
var webViewURLObserver: NSKeyValueObservation?
override func viewDidLoad() {
super.viewDidLoad()
webViewURLObserver = webView.observe(\.url, options: .new) { [weak self] webView, change in
let url = "\(String(describing: change.newValue))"
self?.urlDidChange(urlString: url)
}
}
@revblaze
revblaze / TitleObserver.swift
Last active August 26, 2020 15:29
WebKit Observer: Page Title
var webViewTitleObserver: NSKeyValueObservation?
override func viewDidLoad() {
super.viewDidLoad()
webViewTitleObserver = webView.observe(\.title, options: .new) { [weak self] webView, change in
if let title = change.newValue as? String {
self?.titleDidChange(pageTitle: title)
}
}
@revblaze
revblaze / ProgressObserver.swift
Created May 25, 2020 18:10
WebKit Observer: Page Load Progress
var webViewProgressObserver: NSKeyValueObservation?
@IBOutlet var progressBar: UIProgressView! // iOS Progress Bar
@IBOutlet var progressBar: NSProgressIndicator! // macOS Progress Spinner
override func viewDidLoad() {
super.viewDidLoad()
webViewProgressObserver = webView.observe(\.estimatedProgress, options: .new) { [weak self] webView, change in
self?.progressDidChange(progress: change.newValue ?? 1.0)
@revblaze
revblaze / EasyDefaults.swift
Created June 29, 2020 16:18
Quick and easy UserDefaults
let Defaults = UserDefaults.standard
struct Settings {
static let firstLaunch = Defaults.bool(forKey: Keys.firstLaunch)
static let totalLaunches = Defaults.integer(forKey: Keys.totalLaunches)
}
struct Keys {
static let firstLaunch = "FirstLaunchKey"
static let totalLaunches = "TotalLaunchesKey"
@revblaze
revblaze / UIColorExtension.swift
Created July 14, 2020 15:02
Easy and quick UIColor conversion extension
extension UIColor {
static func color(_ red: Int, green: Int, blue: Int, alpha: Float) -> UIColor {
return UIColor(
red: 1.0 / 255.0 * CGFloat(red),
green: 1.0 / 255.0 * CGFloat(green),
blue: 1.0 / 255.0 * CGFloat(blue),
alpha: CGFloat(alpha))
}
}
@revblaze
revblaze / ProgressBarTimer.swift
Last active August 19, 2020 15:05
Using Timer to determine ProgressBar value (NSProgressIndicator & UIActivityIndicator)
@IBOutlet var progressBar: NSProgressIndicator! // Progress Bar Object
var progressValue = 0.0 // Progress Bar Value (Double)
override func viewDidLoad() {
super.viewDidLoad()
progressBar.doubleValue = progressValue
startProgressLoader()
}