-
Notifications
You must be signed in to change notification settings - Fork 3k
/
Copy pathHistoryBackButton.swift
70 lines (57 loc) · 2.45 KB
/
HistoryBackButton.swift
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
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import SnapKit
import Shared
private struct HistoryBackButtonUX {
static let HistoryHistoryBackButtonHeaderChevronInset: CGFloat = 10
static let HistoryHistoryBackButtonHeaderChevronSize: CGFloat = 20
static let HistoryHistoryBackButtonHeaderChevronLineWidth: CGFloat = 3.0
}
class HistoryBackButton: UIButton {
lazy var title: UILabel = {
let label = UILabel()
label.textColor = UIConstants.HighlightBlue
label.text = Strings.HistoryBackButtonTitle
return label
}()
lazy var chevron: ChevronView = {
let chevron = ChevronView(direction: .left)
chevron.tintColor = UIConstants.HighlightBlue
chevron.lineWidth = HistoryBackButtonUX.HistoryHistoryBackButtonHeaderChevronLineWidth
return chevron
}()
lazy var topBorder: UIView = self.createBorderView()
lazy var bottomBorder: UIView = self.createBorderView()
override init(frame: CGRect) {
super.init(frame: frame)
isUserInteractionEnabled = true
addSubview(topBorder)
addSubview(chevron)
addSubview(title)
backgroundColor = UIColor.white
chevron.snp.makeConstraints { make in
make.leading.equalTo(self.safeArea.leading).offset(HistoryBackButtonUX.HistoryHistoryBackButtonHeaderChevronInset)
make.centerY.equalTo(self)
make.size.equalTo(HistoryBackButtonUX.HistoryHistoryBackButtonHeaderChevronSize)
}
title.snp.makeConstraints { make in
make.leading.equalTo(chevron.snp.trailing).offset(HistoryBackButtonUX.HistoryHistoryBackButtonHeaderChevronInset)
make.trailing.greaterThanOrEqualTo(self).offset(-HistoryBackButtonUX.HistoryHistoryBackButtonHeaderChevronInset)
make.centerY.equalTo(self)
}
topBorder.snp.makeConstraints { make in
make.leading.trailing.equalTo(self)
make.top.equalTo(self).offset(-0.5)
make.height.equalTo(0.5)
}
}
fileprivate func createBorderView() -> UIView {
let view = UIView()
view.backgroundColor = SiteTableViewControllerUX.HeaderBorderColor
return view
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}