mastodon-ios/Mastodon/Scene/Profile/Header/View/ProfileFieldView.swift

101 lines
3.5 KiB
Swift
Raw Normal View History

2021-04-01 08:39:15 +02:00
//
// ProfileFieldView.swift
// Mastodon
//
// Created by MainasuK Cirno on 2021-3-30.
//
import UIKit
import ActiveLabel
final class ProfileFieldView: UIView {
let titleLabel: UILabel = {
let label = UILabel()
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold))
label.textColor = Asset.Colors.Label.primary.color
label.text = "Title"
return label
}()
let valueActiveLabel: ActiveLabel = {
let label = ActiveLabel(style: .profileField)
label.configure(content: "value")
return label
}()
let topSeparatorLine = UIView.separatorLine
let bottomSeparatorLine = UIView.separatorLine
override init(frame: CGRect) {
super.init(frame: frame)
_init()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
_init()
}
}
extension ProfileFieldView {
private func _init() {
titleLabel.translatesAutoresizingMaskIntoConstraints = false
addSubview(titleLabel)
NSLayoutConstraint.activate([
titleLabel.topAnchor.constraint(equalTo: topAnchor),
titleLabel.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor),
titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor),
titleLabel.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh),
])
titleLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
valueActiveLabel.translatesAutoresizingMaskIntoConstraints = false
addSubview(valueActiveLabel)
NSLayoutConstraint.activate([
valueActiveLabel.centerYAnchor.constraint(equalTo: centerYAnchor),
valueActiveLabel.leadingAnchor.constraint(equalTo: titleLabel.trailingAnchor),
valueActiveLabel.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor),
])
valueActiveLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
topSeparatorLine.translatesAutoresizingMaskIntoConstraints = false
addSubview(topSeparatorLine)
NSLayoutConstraint.activate([
topSeparatorLine.topAnchor.constraint(equalTo: topAnchor),
topSeparatorLine.leadingAnchor.constraint(equalTo: leadingAnchor),
topSeparatorLine.trailingAnchor.constraint(equalTo: trailingAnchor),
topSeparatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh),
])
bottomSeparatorLine.translatesAutoresizingMaskIntoConstraints = false
addSubview(bottomSeparatorLine)
NSLayoutConstraint.activate([
bottomSeparatorLine.bottomAnchor.constraint(equalTo: bottomAnchor),
bottomSeparatorLine.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor),
bottomSeparatorLine.trailingAnchor.constraint(equalTo: trailingAnchor),
bottomSeparatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh),
])
}
}
#if canImport(SwiftUI) && DEBUG
import SwiftUI
struct ProfileFieldView_Previews: PreviewProvider {
static var previews: some View {
UIViewPreview(width: 375) {
let filedView = ProfileFieldView()
filedView.valueActiveLabel.configure(field: "https://mastodon.online")
return filedView
}
.previewLayout(.fixed(width: 375, height: 100))
}
}
#endif