|
8 | 8 |
|
9 | 9 | import UIKit |
10 | 10 |
|
| 11 | +import TripKit |
| 12 | + |
11 | 13 | class TKUIHomeHeaderView: UIView { |
12 | 14 |
|
13 | 15 | var searchBar: UISearchBar! |
14 | 16 | var directionsButton: UIButton? |
15 | 17 |
|
16 | | - private var stackView: UIStackView! |
17 | 18 | private var directionsWrapper: UIView? |
18 | 19 |
|
19 | 20 | private let hasGrabHandle: Bool |
| 21 | + private let prompt: String? |
20 | 22 |
|
21 | | - init(hasGrabHandle: Bool) { |
| 23 | + init(hasGrabHandle: Bool, prompt: String? = nil) { |
22 | 24 | self.hasGrabHandle = hasGrabHandle |
| 25 | + self.prompt = prompt |
23 | 26 | super.init(frame: .zero) |
24 | 27 | didInit() |
25 | 28 | } |
26 | 29 |
|
27 | 30 | required init?(coder: NSCoder) { |
28 | 31 | self.hasGrabHandle = true |
| 32 | + self.prompt = nil |
29 | 33 | super.init(coder: coder) |
30 | 34 | didInit() |
31 | 35 | } |
@@ -61,27 +65,43 @@ class TKUIHomeHeaderView: UIView { |
61 | 65 | directionsWrapper.centerXAnchor.constraint(equalTo: directionsButton.centerXAnchor), |
62 | 66 | ]) |
63 | 67 |
|
64 | | - let stackedViews: [UIView] = [searchBar, directionsWrapper] |
65 | | - |
66 | | - let stackView = UIStackView(arrangedSubviews: stackedViews) |
67 | | - stackView.translatesAutoresizingMaskIntoConstraints = false |
68 | | - stackView.axis = .horizontal |
69 | | - stackView.spacing = 0 |
70 | | - |
71 | | - addSubview(stackView) |
| 68 | + let hStack = UIStackView(arrangedSubviews: [searchBar, directionsWrapper]) |
| 69 | + hStack.translatesAutoresizingMaskIntoConstraints = false |
| 70 | + hStack.axis = .horizontal |
| 71 | + hStack.spacing = 0 |
| 72 | + |
| 73 | + addSubview(hStack) |
72 | 74 |
|
73 | | - NSLayoutConstraint.activate([ |
74 | | - stackView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 6), |
75 | | - stackView.topAnchor.constraint(equalTo: topAnchor, constant: hasGrabHandle ? -10 : 0), // negative spacer to minimise gap to grab handle |
76 | | - trailingAnchor.constraint(equalTo: stackView.trailingAnchor, constant: 10), |
77 | | - bottomAnchor.constraint(equalTo: stackView.bottomAnchor), |
78 | | - ]) |
| 75 | + if let prompt { |
| 76 | + let label = UILabel() |
| 77 | + label.translatesAutoresizingMaskIntoConstraints = false |
| 78 | + label.font = TKStyleManager.boldCustomFont(forTextStyle: .title2) |
| 79 | + label.text = prompt |
| 80 | + addSubview(label) |
| 81 | + |
| 82 | + NSLayoutConstraint.activate([ |
| 83 | + label.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 12), |
| 84 | + label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -12), |
| 85 | + hStack.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 6), |
| 86 | + trailingAnchor.constraint(equalTo: hStack.trailingAnchor, constant: 10), |
| 87 | + |
| 88 | + label.topAnchor.constraint(equalTo: topAnchor, constant: 0), |
| 89 | + hStack.topAnchor.constraint(equalTo: label.bottomAnchor, constant: 0), |
| 90 | + bottomAnchor.constraint(equalTo: hStack.bottomAnchor), |
| 91 | + ]) |
| 92 | + |
| 93 | + } else { |
| 94 | + NSLayoutConstraint.activate([ |
| 95 | + hStack.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 6), |
| 96 | + hStack.topAnchor.constraint(equalTo: topAnchor, constant: hasGrabHandle ? -10 : 0), // negative spacer to minimise gap to grab handle |
| 97 | + trailingAnchor.constraint(equalTo: hStack.trailingAnchor, constant: 10), |
| 98 | + bottomAnchor.constraint(equalTo: hStack.bottomAnchor), |
| 99 | + ]) |
| 100 | + } |
79 | 101 |
|
80 | | - self.stackView = stackView |
81 | 102 | self.searchBar = searchBar |
82 | 103 | self.directionsButton = directionsButton |
83 | 104 |
|
84 | | - // Styling |
85 | 105 | searchBar.tintColor = .tkAppTintColor |
86 | 106 | searchBar.barTintColor = .tkBackground |
87 | 107 | } |
|
0 commit comments