mastodon-ios/Mastodon/Scene/Share/View/Content/NavigationBarProgressView.s...

59 lines
1.6 KiB
Swift

//
// NavigationBarProgressView.swift
// Mastodon
//
// Created by sxiaojian on 2021/3/16.
//
import UIKit
import MastodonAsset
import MastodonLocalization
class NavigationBarProgressView: UIView {
static let progressAnimationDuration: TimeInterval = 0.3
let sliderView: UIView = {
let view = UIView()
view.backgroundColor = Asset.Colors.brand.color
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
var sliderTrailingAnchor: NSLayoutConstraint!
var progress: CGFloat = 0 {
willSet(value) {
sliderTrailingAnchor.constant = (1 - progress) * bounds.width
UIView.animate(withDuration: NavigationBarProgressView.progressAnimationDuration) {
self.setNeedsLayout()
}
}
}
override init(frame: CGRect) {
super.init(frame: frame)
_init()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
_init()
}
}
extension NavigationBarProgressView {
func _init() {
self.translatesAutoresizingMaskIntoConstraints = false
self.backgroundColor = .clear
addSubview(sliderView)
sliderTrailingAnchor = trailingAnchor.constraint(equalTo: sliderView.trailingAnchor)
NSLayoutConstraint.activate([
sliderView.topAnchor.constraint(equalTo: topAnchor),
sliderView.leadingAnchor.constraint(equalTo: leadingAnchor),
sliderView.bottomAnchor.constraint(equalTo: bottomAnchor),
sliderTrailingAnchor
])
}
}