forked from LoopKit/LoopKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChartTableViewCell.swift
More file actions
128 lines (98 loc) · 3.68 KB
/
ChartTableViewCell.swift
File metadata and controls
128 lines (98 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// ChartTableViewCell.swift
// Naterade
//
// Created by Nathan Racklyeft on 2/19/16.
// Copyright © 2016 Nathan Racklyeft. All rights reserved.
//
import SwiftUI
import UIKit
public final class ChartTableViewCell: UITableViewCell {
@IBOutlet public weak var supplementalChartContentView: ChartContainerView?
@IBOutlet weak var chartContentView: ChartContainerView!
@IBOutlet weak var mainStackView: UIStackView!
@IBOutlet weak var titleStackView: UIStackView?
@IBOutlet weak var titleLabel: UILabel?
@IBOutlet weak var subtitleLabel: UILabel?
var footerView: UIView?
@IBOutlet weak var rightArrowHint: UIImageView? {
didSet {
rightArrowHint?.isHidden = !doesNavigate
}
}
public override func awakeFromNib() {
titleStackView?.layoutMargins = UIEdgeInsets(top: 11, left: 16, bottom: 0, right: 16)
titleStackView?.isLayoutMarginsRelativeArrangement = true
}
public var doesNavigate: Bool = true {
didSet {
rightArrowHint?.isHidden = !doesNavigate
}
}
public override func prepareForReuse() {
super.prepareForReuse()
doesNavigate = true
supplementalChartContentView?.isHidden = true
supplementalChartContentView?.chartGenerator = nil
chartContentView.chartGenerator = nil
removeFooterView()
}
public func reloadChart() {
supplementalChartContentView?.reloadChart()
chartContentView.reloadChart()
}
public func setChartGenerator(generator: ((CGRect) -> UIView?)?) {
chartContentView.chartGenerator = generator
}
public func setSupplementalChartGenerator(generator: ((CGRect) -> UIView?)?) {
supplementalChartContentView?.chartGenerator = generator
supplementalChartContentView?.isHidden = generator == nil
}
public func setTitleLabelText(label: String?) {
titleLabel?.text = label
titleLabel?.font = .systemFont(ofSize: 17, weight: .semibold)
}
public func setTitleLabelAccessibilityIdentifier(_ value: String) {
titleLabel?.accessibilityIdentifier =
"chartTitleText_\(value)_\(ChartsManager.xAxisAccessibilityIDs?.count ?? -1)"
}
public func setTitleLabelText(label: NSAttributedString?) {
titleLabel?.attributedText = label
}
public func removeTitleLabelText() {
titleLabel?.text?.removeAll()
titleLabel?.attributedText = NSAttributedString(string: "")
}
public func setSubtitleLabel(label: NSAttributedString?) {
subtitleLabel?.attributedText = label
}
public func removeSubtitleLabelText() {
subtitleLabel?.text?.removeAll()
subtitleLabel?.attributedText = NSAttributedString(string: "")
}
public func setTitleTextColor(color: UIColor) {
titleLabel?.textColor = color
}
public func setSubtitleTextColor(color: UIColor) {
subtitleLabel?.textColor = color
}
public func setAlpha(alpha: CGFloat) {
titleLabel?.alpha = alpha
subtitleLabel?.alpha = alpha
footerView?.alpha = alpha
}
public func removeFooterView() {
self.footerView?.removeFromSuperview()
self.footerView = nil
}
public func setFooterView(content: (() -> some View)?) {
removeFooterView()
if let content = content?() {
guard !(content is EmptyView), let rootView = UIHostingController(rootView: content).view else {
return
}
self.footerView = rootView
self.mainStackView.addArrangedSubview(rootView)
}
}
}