Skip to content

Instantly share code, notes, and snippets.

View barisuyar's full-sized avatar
🎯
Focusing

Barış Uyar barisuyar

🎯
Focusing
View GitHub Profile
public class FirstClass {
fileprivate func someMethod() {}
}
internal class BusinessClass: FirstClass {
override internal func someMethod() {}
}
private class Tax {
import UIKit
final class Slider: UISlider {
}
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 18:50
Slider-2
import UIKit
final class Slider: UISlider {
override func draw(_ rect: CGRect) {
super.draw(rect)
setup()
}
private func setup() {
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 18:52
Slider-3
final class Slider: UISlider {
private let baseLayer = CALayer() // Step 3
override func draw(_ rect: CGRect) {
super.draw(rect)
setup()
}
@barisuyar
barisuyar / ThumbView.swift
Created December 1, 2021 18:58
ThumbView
// Step 4
final class ThumbView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
@barisuyar
barisuyar / UIView+Extension.swift
Created December 1, 2021 19:11
UIView+Extension
// Step 4
extension UIView {
var snapshot: UIImage {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
let capturedImage = renderer.image { context in
layer.render(in: context.cgContext)
}
return capturedImage
}
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 19:13
Slider + create thumb
// Step 5
private func createThumbImageView() {
let thumbSize = (3 * frame.height) / 4
let thumbView = ThumbView(frame: .init(x: 0,
y: 0,
width: thumbSize,
height: thumbSize))
thumbView.layer.cornerRadius = thumbSize / 2
let thumbSnapshot = thumbView.snapshot
setThumbImage(thumbSnapshot, for: .normal)
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 19:20
Slider+all thumb states
// Step 5
private func createThumbImageView() {
let thumbSize = (3 * frame.height) / 4
let thumbView = ThumbView(frame: .init(x: 0,
y: 0,
width: thumbSize,
height: thumbSize))
thumbView.layer.cornerRadius = thumbSize / 2
let thumbSnapshot = thumbView.snapshot
setThumbImage(thumbSnapshot, for: .normal)
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 19:24
Slider + TrackLayer
private let trackLayer = CAGradientLayer() // Step 7
// Step 7
private func configureTrackLayer() {
let firstColor = UIColor(red: 210/255, green: 152/255, blue: 238/255, alpha: 1).cgColor
let secondColor = UIColor(red: 166/255, green: 20/255, blue: 217/255, alpha: 1).cgColor
trackLayer.colors = [firstColor, secondColor]
trackLayer.startPoint = .init(x: 0, y: 0.5)
trackLayer.endPoint = .init(x: 1, y: 0.5)
trackLayer.frame = .init(x: 0,
@barisuyar
barisuyar / Slider.swift
Created December 1, 2021 19:27
Slider + Track positioning
private func setup() {
clear()
createBaseLayer() // Step 3
createThumbImageView() // Step 5
configureTrackLayer() // Step 7
addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged) // Step 8
}
// Step 8
@objc private func valueChanged(_ sender: Slider) {