forked from zelo72/mastodon-ios
81 lines
3.3 KiB
Swift
81 lines
3.3 KiB
Swift
//
|
|
// HomeTimelineNavigationBarView.swift
|
|
// Mastodon
|
|
//
|
|
// Created by sxiaojian on 2021/3/15.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
final class HomeTimelineNavigationBarView {
|
|
static let mastodonLogoTitleView: UIImageView = {
|
|
let imageView = UIImageView(image: Asset.Asset.mastodonTextLogo.image.withRenderingMode(.alwaysTemplate))
|
|
imageView.tintColor = Asset.Colors.Label.primary.color
|
|
return imageView
|
|
}()
|
|
|
|
static let offlineView: UIView = {
|
|
let view = HomeTimelineNavigationBarView.backgroundViewWithColor(color: Asset.Colors.lightDangerRed.color)
|
|
let label = HomeTimelineNavigationBarView.contentLabel(text: L10n.Scene.HomeTimeline.NavigationBarState.offline)
|
|
HomeTimelineNavigationBarView.addLabelToView(label: label, view: view)
|
|
return view
|
|
}()
|
|
|
|
static let newPostsView: UIView = {
|
|
let view = HomeTimelineNavigationBarView.backgroundViewWithColor(color: Asset.Colors.Button.normal.color)
|
|
let label = HomeTimelineNavigationBarView.contentLabel(text: L10n.Scene.HomeTimeline.NavigationBarState.newPosts)
|
|
HomeTimelineNavigationBarView.addLabelToView(label: label, view: view)
|
|
return view
|
|
}()
|
|
|
|
static var publishedView: UIView = {
|
|
let view = HomeTimelineNavigationBarView.backgroundViewWithColor(color: Asset.Colors.lightSuccessGreen.color)
|
|
let label = HomeTimelineNavigationBarView.contentLabel(text: L10n.Scene.HomeTimeline.NavigationBarState.published)
|
|
HomeTimelineNavigationBarView.addLabelToView(label: label, view: view)
|
|
return view
|
|
}()
|
|
|
|
static var progressView: NavigationBarProgressView = {
|
|
let view = NavigationBarProgressView()
|
|
return view
|
|
}()
|
|
|
|
static var publishingLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.translatesAutoresizingMaskIntoConstraints = false
|
|
label.textColor = .black
|
|
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold))
|
|
label.text = L10n.Scene.HomeTimeline.NavigationBarState.publishing
|
|
return label
|
|
}()
|
|
|
|
static func addLabelToView(label: UILabel, view: UIView) {
|
|
view.addSubview(label)
|
|
NSLayoutConstraint.activate([
|
|
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16),
|
|
view.trailingAnchor.constraint(equalTo: label.trailingAnchor, constant: 16),
|
|
label.topAnchor.constraint(equalTo: view.topAnchor, constant: 1),
|
|
view.bottomAnchor.constraint(equalTo: label.bottomAnchor, constant: 1),
|
|
view.heightAnchor.constraint(equalToConstant: 24),
|
|
])
|
|
}
|
|
|
|
static func backgroundViewWithColor(color: UIColor) -> UIView {
|
|
let view = UIView()
|
|
view.backgroundColor = color
|
|
view.translatesAutoresizingMaskIntoConstraints = false
|
|
view.layer.cornerRadius = 12
|
|
view.clipsToBounds = true
|
|
return view
|
|
}
|
|
|
|
static func contentLabel(text: String) -> UILabel {
|
|
let label = UILabel()
|
|
label.translatesAutoresizingMaskIntoConstraints = false
|
|
label.textColor = .white
|
|
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .bold))
|
|
label.text = text
|
|
return label
|
|
}
|
|
}
|