Skip to content

Commit

Permalink
Remove extra attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
jawad-ext committed Dec 5, 2021
1 parent c0c6350 commit 2d925e3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 53 deletions.
66 changes: 34 additions & 32 deletions Sources/Switches/JDSwitch.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@ import UIKit
layer.backgroundColor = UIColor.white.cgColor
return layer
}()

private lazy var trackLayer: CAShapeLayer = {
let shape = CAShapeLayer()

shape.borderWidth = borderWidth
shape.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
return shape
}()

var changeThumbColor: Bool = false {
didSet {
setThumbColor()
}
}

private var isTouchDown: Bool = false {
didSet {
layoutSublayers(of: layer)
Expand Down Expand Up @@ -74,52 +74,51 @@ import UIKit
public var thumbTintColor: UIColor? {
didSet { setThumbColor() }
}

public var onThumbTintColor: UIColor = #colorLiteral(red: 0.5438016653, green: 0.7640405893, blue: 0.291983664, alpha: 1) {
didSet { setThumbColor() }
}

public var offThumbTintColor: UIColor = #colorLiteral(red: 0.864574194, green: 0.8753482103, blue: 0.848641932, alpha: 1) {
didSet { setThumbColor() }
}

// MARK: - initializers

convenience init() {
self.init(frame: .zero)
}

override init(frame: CGRect) {
super.init(frame: frame)
controlDidLoad()
}
required public init?(coder aDecoder: NSCoder) {

public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
controlDidLoad()
}

// MARK: - Common Init

private func controlDidLoad() {
layer.addSublayer(trackLayer)
layer.addSublayer(thumbLayer)

layer.shadowOffset = .zero
layer.shadowOpacity = 0.3
layer.shadowRadius = 5
backgroundColor = .clear

setThumbColor()
layoutSublayers(of: layer)
addTouchHandlers()
}

final func getThumbSize() -> CGSize {
let height = bounds.height - 2 * (borderWidth + thumbRadiusPadding)
return CGSize(width: height, height: height)
}

final func getThumbOrigin(for width: CGFloat) -> CGPoint {
let inset = borderWidth + thumbRadiusPadding
if isTouchDown {
Expand All @@ -130,20 +129,23 @@ import UIKit
return CGPoint(x: x, y: inset)
}
}

private func getTackSize() -> CGSize {
isTouchDown ? CGSize(width: bounds.height, height: bounds.height) : bounds.size
isTouchDown ? CGSize(
width: bounds.height,
height: bounds.height
) : bounds.size
}
final func getTrackOrigin(for width: CGFloat) -> CGPoint {

private func getTrackOrigin(for width: CGFloat) -> CGPoint {
let inset: CGFloat = 0.0
let x = !isOn ? bounds.width - width : inset
return CGPoint(x: x, y: inset)
}

override public func layoutSublayers(of layer: CALayer) {
super.layoutSublayers(of: layer)

layoutTrackLayer(for: layer.bounds)
layoutThumbLayer(for: layer.bounds)
}
Expand All @@ -156,15 +158,15 @@ private extension JDSwitch {
let size = getTackSize()
let origin = getTrackOrigin(for: size.width)
trackLayer.frame = CGRect(origin: origin, size: size)
shape == .rounded ? (trackLayer.cornerRadius = trackLayer.bounds.height / 2) : (trackLayer.cornerRadius = 5)

trackLayer.cornerRadius = shape == .rounded ? trackLayer.bounds.height / 2 : 5
}

func layoutThumbLayer(for bounds: CGRect) {
let size = getThumbSize()
let origin = getThumbOrigin(for: size.width)
thumbLayer.frame = CGRect(origin: origin, size: size)

shape == .rounded ? (thumbLayer.cornerRadius = size.height / 2) : (thumbLayer.cornerRadius = thumbCornerRadius)
}
}
Expand All @@ -176,35 +178,35 @@ private extension JDSwitch {
addTarget(self, action: #selector(touchDown), for: [.touchDown, .touchDragEnter])
addTarget(self, action: #selector(touchUp), for: [.touchUpInside])
addTarget(self, action: #selector(touchEnded), for: [.touchDragExit, .touchCancel])

let leftSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(swipeLeftRight(_:)))
leftSwipeGesture.direction = [.left]
addGestureRecognizer(leftSwipeGesture)

let rightSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(swipeLeftRight(_:)))
rightSwipeGesture.direction = [.right]
addGestureRecognizer(rightSwipeGesture)
}

@objc
func swipeLeftRight(_ gesture: UISwipeGestureRecognizer) {
let canLeftSwipe = isOn && gesture.direction == .left
let canRightSwipe = !isOn && gesture.direction == .right
guard canLeftSwipe || canRightSwipe else { return }
touchUp()
}

@objc
func touchDown() {
isTouchDown = true
}

@objc
func touchUp() {
isOn.toggle()
touchEnded()
}

@objc
func touchEnded() {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
Expand Down
25 changes: 4 additions & 21 deletions Sources/Switches/SDSwitch.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ public typealias SDSwitchLoadingStarted = () -> Void
fileprivate lazy var trackLayer: CALayer = {
let shape = CALayer()
shape.borderWidth = borderWidth
shape.borderColor = UIColor.blue.cgColor

return shape
}()

Expand All @@ -53,18 +51,13 @@ public typealias SDSwitchLoadingStarted = () -> Void
shape.lineWidth = thumbRadiusPadding
shape.strokeColor = loadingColor.cgColor
shape.fillColor = UIColor.clear.cgColor
shape.backgroundColor = UIColor.clear.cgColor
shape.lineCap = .round
return shape
}()

private lazy var loadingLayer: CAShapeLayer = {
let shape = CAShapeLayer()
shape.lineWidth = thumbRadiusPadding
shape.strokeColor = loadingColor.cgColor
shape.fillColor = UIColor.clear.cgColor
shape.backgroundColor = UIColor.clear.cgColor
shape.lineCap = .round
return shape
}()

Expand Down Expand Up @@ -102,12 +95,6 @@ public typealias SDSwitchLoadingStarted = () -> Void

public var isLoadingEnabled: Bool = false

public var shape: shapeType = .rounded {
didSet {
layoutSublayers(of: layer)
}
}

public var borderWidth: CGFloat = 2 {
didSet {
trackLayer.borderWidth = borderWidth
Expand Down Expand Up @@ -169,16 +156,15 @@ public typealias SDSwitchLoadingStarted = () -> Void
controlDidLoad()
}

required public init?(coder aDecoder: NSCoder) {
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
controlDidLoad()
}

// MARK: - Common Init

fileprivate func controlDidLoad() {
layer.addSublayer(trackLayer)
layer.addSublayer(thumbLayer)
[trackLayer, thumbLayer].forEach(layer.addSublayer)

layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = .zero
Expand All @@ -188,7 +174,6 @@ public typealias SDSwitchLoadingStarted = () -> Void

trackLayer.backgroundColor = getBackgroundColor()
setThumbColor()
layoutSublayers(of: layer)
addTouchHandlers()
}

Expand Down Expand Up @@ -272,16 +257,14 @@ private extension SDSwitch {
let size = getTackSize()
let origin = getTrackOrigin(for: size.width)
trackLayer.frame = CGRect(origin: origin, size: size)

shape == .rounded ? (trackLayer.cornerRadius = trackLayer.bounds.height/2) : (trackLayer.cornerRadius = 5)
trackLayer.cornerRadius = trackLayer.bounds.midY
}

func layoutThumbLayer(for bounds: CGRect) {
let size = getThumbSize()
let origin = getThumbOrigin(for: size.width)
thumbLayer.frame = CGRect(origin: origin, size: size)

shape == .rounded ? (thumbLayer.cornerRadius = size.height/2) : (thumbLayer.cornerRadius = thumbCornerRadius)
thumbLayer.cornerRadius = thumbLayer.bounds.midY
}

func layoutLoadingLayer(for bounds: CGRect) {
Expand Down

0 comments on commit 2d925e3

Please sign in to comment.