mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Move TickMarkSlider to UIKitExtras.
This commit is contained in:
@@ -1,83 +0,0 @@
|
||||
//
|
||||
// TickMarkSlider.swift
|
||||
// NetNewsWire-iOS
|
||||
//
|
||||
// Created by Maurice Parker on 11/8/19.
|
||||
// Copyright © 2019 Ranchero Software. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class TickMarkSlider: UISlider {
|
||||
|
||||
private var enableFeedback = false
|
||||
private let feedbackGenerator = UISelectionFeedbackGenerator()
|
||||
|
||||
private var roundedValue: Float?
|
||||
override var value: Float {
|
||||
didSet {
|
||||
let testValue = value.rounded()
|
||||
if testValue != roundedValue && enableFeedback && value.truncatingRemainder(dividingBy: 1) == 0 {
|
||||
roundedValue = testValue
|
||||
feedbackGenerator.selectionChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func addTickMarks() {
|
||||
|
||||
enableFeedback = true
|
||||
|
||||
let numberOfGaps = Int(maximumValue) - Int(minimumValue)
|
||||
|
||||
var gapLayoutGuides = [UILayoutGuide]()
|
||||
|
||||
for i in 0...numberOfGaps {
|
||||
|
||||
let tick = UIView()
|
||||
tick.translatesAutoresizingMaskIntoConstraints = false
|
||||
tick.backgroundColor = AppAssets.tickMarkColor
|
||||
insertSubview(tick, at: 0)
|
||||
|
||||
tick.widthAnchor.constraint(equalToConstant: 3).isActive = true
|
||||
tick.heightAnchor.constraint(equalToConstant: 10).isActive = true
|
||||
tick.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
|
||||
|
||||
if i == 0 {
|
||||
tick.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
|
||||
}
|
||||
|
||||
if let lastGapLayoutGuild = gapLayoutGuides.last {
|
||||
lastGapLayoutGuild.trailingAnchor.constraint(equalTo: tick.leadingAnchor).isActive = true
|
||||
}
|
||||
|
||||
if i != numberOfGaps {
|
||||
let gapLayoutGuild = UILayoutGuide()
|
||||
gapLayoutGuides.append(gapLayoutGuild)
|
||||
addLayoutGuide(gapLayoutGuild)
|
||||
tick.trailingAnchor.constraint(equalTo: gapLayoutGuild.leadingAnchor).isActive = true
|
||||
} else {
|
||||
tick.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if let firstGapLayoutGuild = gapLayoutGuides.first {
|
||||
for i in 1..<gapLayoutGuides.count {
|
||||
gapLayoutGuides[i].widthAnchor.constraint(equalTo: firstGapLayoutGuild.widthAnchor).isActive = true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
|
||||
let result = super.continueTracking(touch, with: event)
|
||||
value = value.rounded()
|
||||
return result
|
||||
}
|
||||
|
||||
override func endTracking(_ touch: UITouch?, with event: UIEvent?) {
|
||||
value = value.rounded()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user