Commit 2ecc3c9253a7da39f526b3ace526eed7df8a8d22

Authored by Dmitriy Tymofyeyev
1 parent ccbed3ee

add tableView on settings screen

  1 +//
  2 +// SettingsModel.swift
  3 +// InterQR-Internship
  4 +//
  5 +// Created by Leyter on 09.06.2022.
  6 +//
  7 +
  8 +import Foundation
  9 +import UIKit
  10 +enum SettingsModel: CaseIterable {
  11 + case displayName
  12 + case doNotDisturb
  13 + case ringtone
  14 + case editResidents
  15 + case widgetLock
  16 +
  17 +
  18 +
  19 + func getTitle() -> String {
  20 + switch self {
  21 + case .displayName :
  22 + return "Your display name"
  23 + case .doNotDisturb :
  24 + return "Do not disturb"
  25 + case .editResidents :
  26 + return "Edit residents"
  27 + case .widgetLock:
  28 + return "Widget lock"
  29 + case .ringtone:
  30 + return "Rringtone"
  31 + }
  32 + }
  33 +
  34 + func getIcon() -> UIImage? {
  35 + switch self {
  36 + case .displayName:
  37 + return UIImage(named: "Profile")
  38 + case .doNotDisturb:
  39 + return UIImage(named: "Notification")
  40 + case .editResidents:
  41 + return UIImage(named: "Password")
  42 + case .widgetLock:
  43 + return UIImage(named: "Profile")
  44 + case .ringtone:
  45 + return UIImage(named: "Volume")
  46 + }
  47 + }
  48 +
  49 + func getDescription() -> String {
  50 + switch self {
  51 + case .displayName :
  52 + return "This name will be dispayed everywhere"
  53 + case .doNotDisturb :
  54 + return "This name will be dispayed everywhere"
  55 + case .editResidents :
  56 + return "This name will be dispayed everywhere"
  57 + case .widgetLock:
  58 + return "This name will be dispayed everywhere"
  59 + case .ringtone:
  60 + return "This name will be dispayed everywhere"
  61 + }
  62 + }
  63 +}
... ...
1 1 //
2   -// ProfileView.swift
  2 +// DisplayNameCell.swift
3 3 // InterQR-Internship
4 4 //
5   -// Created by Дмитрий Тимофеев on 08.06.2022.
  5 +// Created by Leyter on 09.06.2022.
6 6 //
7 7
  8 +import Foundation
8 9 import UIKit
9   -import SnapKit
10   -
11   -class ProfileView: UIView {
12   -
13   - var profileImage: UIImageView = {
  10 +class DisplayNameCell: UITableViewCell, Reusable {
  11 + var settingsIcon: UIImageView = {
14 12 var obj = UIImageView()
15 13 obj.image = UIImage(named: "Profile")
16 14 return obj
... ... @@ -29,58 +27,52 @@ class ProfileView: UIView {
29 27 obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
30 28 return obj
31 29 }()
32   - var displayNameLabel: UILabel = {
33   - var obj = UILabel()
  30 + var displayNameTextField: UITextField = {
  31 + var obj = UITextField()
34 32 obj.text = "John Doe"
  33 + obj.returnKeyType = .done
35 34 obj.backgroundColor = UIColor(red: 0.971, green: 0.967, blue: 0.967, alpha: 1)
36 35 obj.clipsToBounds = true
37 36 obj.layer.cornerRadius = 15
38 37 return obj
39 38 }()
40   - var dividingLineView: UIView = {
41   - var view = UIView()
42   - view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1)
43   - return view
44   - }()
45 39
46   - override init(frame: CGRect) {
47   - super.init(frame: frame)
48   - layout()
  40 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  41 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  42 + setup()
49 43 }
50 44
51 45 required init?(coder: NSCoder) {
52   - fatalError("init(coder:) has not been implemented")
  46 + super.init(coder: coder)
  47 + setup()
53 48 }
54 49
55   - func layout() {
56   - addSubview(profileImage)
57   - addSubview(titleLabel)
58   - addSubview(descriptionLabel)
59   - addSubview(displayNameLabel)
60   - addSubview(dividingLineView)
  50 + private func setup() {
  51 + selectionStyle = .none
  52 + contentView.addSubview(settingsIcon)
  53 + contentView.addSubview(titleLabel)
  54 + contentView.addSubview(descriptionLabel)
  55 + contentView.addSubview(displayNameTextField)
61 56
62   - profileImage.snp.makeConstraints {
63   - $0.top.equalTo(snp.top)
64   - $0.leading.equalTo(snp.leading).offset(32)
65   - }
66   - titleLabel.snp.makeConstraints {
67   - $0.top.equalTo(profileImage.snp.top)
68   - $0.leading.equalTo(profileImage.snp.trailing).offset(18)
  57 + settingsIcon.snp.makeConstraints { make in
  58 + make.top.equalToSuperview()
  59 + make.leading.equalTo(snp.leading).offset(32)
69 60 }
70   - descriptionLabel.snp.makeConstraints {
71   - $0.top.equalTo(titleLabel.snp.bottom).offset(5)
72   - $0.leading.equalTo(titleLabel.snp.leading)
  61 + titleLabel.snp.makeConstraints { make in
  62 + make.top.equalTo(settingsIcon.snp.top)
  63 + make.leading.equalTo(settingsIcon.snp.trailing).offset(18)
73 64 }
74   - displayNameLabel.snp.makeConstraints {
75   - $0.top.equalTo(descriptionLabel.snp.bottom).offset(20)
76   - $0.leading.equalTo(snp.leading).offset(66)
77   - $0.trailing.equalTo(snp.trailing).offset(-28)
78   - $0.height.equalTo(47)
  65 + descriptionLabel.snp.makeConstraints { make in
  66 + make.top.equalTo(titleLabel.snp.bottom).offset(5)
  67 + make.leading.equalTo(titleLabel.snp.leading)
79 68 }
80   - dividingLineView.snp.makeConstraints {
81   - $0.leading.trailing.equalToSuperview()
82   - $0.height.equalTo(1)
83   - $0.top.equalTo(displayNameLabel.snp.bottom).offset(30)
  69 + displayNameTextField.snp.makeConstraints { make in
  70 + make.top.equalTo(descriptionLabel.snp.bottom).offset(20)
  71 + make.leading.equalTo(snp.leading).offset(66)
  72 + make.trailing.equalTo(snp.trailing).offset(-28)
  73 + make.height.equalTo(47)
  74 + make.bottom.equalToSuperview().offset(-30)
84 75 }
  76 +
85 77 }
86 78 }
... ...
  1 +//
  2 +// SetingsSwitchCell.swift
  3 +// InterQR-Internship
  4 +//
  5 +// Created by Leyter on 09.06.2022.
  6 +//
  7 +
  8 +import Foundation
  9 +import UIKit
  10 +class SettingsSwitchCell: UITableViewCell, Reusable {
  11 +
  12 + var settingsIcon: UIImageView = {
  13 + var obj = UIImageView()
  14 + obj.image = UIImage(named: "Notification")
  15 + return obj
  16 + }()
  17 +
  18 + var titleLabel: UILabel = {
  19 + var obj = UILabel()
  20 + obj.text = "Do not disturb"
  21 + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1)
  22 + obj.font = .skModernist(type: .bold, ofSize: 16)
  23 + return obj
  24 + }()
  25 +
  26 + var descriptionLabel: UILabel = {
  27 + var obj = UILabel()
  28 + obj.text = "You will not be notified of any calls for one day. Auto reset at midnight"
  29 + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
  30 + obj.font = .skModernist(type: .regular, ofSize: 14)
  31 + obj.numberOfLines = 0
  32 + return obj
  33 + }()
  34 +
  35 + var notificationSwitch: UISwitch = {
  36 + var obj = UISwitch()
  37 + obj.isOn = false
  38 + obj.clipsToBounds = true
  39 + return obj
  40 + }()
  41 +
  42 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  43 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  44 + setup()
  45 + }
  46 +
  47 + required init?(coder: NSCoder) {
  48 + super.init(coder: coder)
  49 + setup()
  50 + }
  51 +
  52 + func setup() {
  53 + selectionStyle = .none
  54 + contentView.addSubview(settingsIcon)
  55 + contentView.addSubview(titleLabel)
  56 + contentView.addSubview(descriptionLabel)
  57 + contentView.addSubview(notificationSwitch)
  58 +
  59 + settingsIcon.snp.makeConstraints { make in
  60 + make.leading.equalToSuperview().offset(31)
  61 + make.top.equalToSuperview().offset(38)
  62 + }
  63 + titleLabel.snp.makeConstraints { make in
  64 + make.leading.equalTo(settingsIcon.snp.trailing).offset(17.5)
  65 + make.top.equalToSuperview().offset(38)
  66 + }
  67 + descriptionLabel.snp.makeConstraints { make in
  68 + make.top.equalTo(titleLabel.snp.bottom).offset(5)
  69 + make.leading.equalTo(titleLabel.snp.leading)
  70 + make.bottom.equalToSuperview().offset(-22)
  71 + }
  72 + notificationSwitch.snp.makeConstraints { make in
  73 + make.top.equalTo(snp.top).offset(36)
  74 + make.trailing.equalTo(snp.trailing).offset(-28)
  75 + }
  76 + }
  77 +
  78 +}
... ...
  1 +//
  2 +// SettingsTableViewCell.swift
  3 +// InterQR-Internship
  4 +//
  5 +// Created by Leyter on 09.06.2022.
  6 +//
  7 +
  8 +import Foundation
  9 +import UIKit
  10 +class SettingsTableViewCell: UITableViewCell, Reusable {
  11 +
  12 + var settingsIcon: UIImageView = {
  13 + var obj = UIImageView()
  14 + obj.image = UIImage(named: "Edit")
  15 + obj.contentMode = .scaleAspectFill
  16 + return obj
  17 + }()
  18 +
  19 + var titleLabel: UILabel = {
  20 + var obj = UILabel()
  21 + obj.text = "Edit residents"
  22 + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1)
  23 + obj.font = .skModernist(type: .bold, ofSize: 16)
  24 + return obj
  25 + }()
  26 + var descriptionLabel: UILabel = {
  27 + var obj = UILabel()
  28 + obj.text = "Edit the residents and their information"
  29 + obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
  30 + obj.font = .skModernist(type: .regular, ofSize: 14)
  31 + return obj
  32 + }()
  33 + var arrowImageView: UIImageView = {
  34 + var obj = UIImageView()
  35 + obj.image = UIImage(named: "NextPointer")
  36 + return obj
  37 + }()
  38 +
  39 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  40 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  41 + setup()
  42 + }
  43 +
  44 + required init?(coder: NSCoder) {
  45 + super.init(coder: coder)
  46 + setup()
  47 + }
  48 +
  49 + func setup() {
  50 + selectionStyle = .none
  51 + contentView.addSubview(settingsIcon)
  52 + contentView.addSubview(titleLabel)
  53 + contentView.addSubview(descriptionLabel)
  54 + contentView.addSubview(arrowImageView)
  55 +
  56 + settingsIcon.snp.makeConstraints { make in
  57 + make.top.equalToSuperview().offset(26)
  58 + make.leading.equalToSuperview().offset(32)
  59 + make.height.width.equalTo(18)
  60 + }
  61 + titleLabel.snp.makeConstraints { make in
  62 + make.top.equalToSuperview().offset(26)
  63 + make.leading.equalTo(settingsIcon.snp.trailing).offset(15)
  64 + }
  65 + descriptionLabel.snp.makeConstraints { make in
  66 + make.top.equalTo(titleLabel.snp.bottom).offset(5)
  67 + make.leading.equalTo(titleLabel.snp.leading)
  68 + make.bottom.equalToSuperview().offset(-22)
  69 + }
  70 + arrowImageView.snp.makeConstraints { make in
  71 + make.centerY.equalToSuperview()
  72 + make.trailing.equalTo(snp.trailing).offset(-28)
  73 + }
  74 + }
  75 +}
... ...
1   -//
2   -// EditInfoView.swift
3   -// InterQR-Internship
4   -//
5   -// Created by Дмитрий Тимофеев on 08.06.2022.
6   -//
7   -
8   -import UIKit
9   -
10   -class EditInfoView: UIView {
11   -
12   - var editImage: UIImageView = {
13   - var obj = UIImageView()
14   - obj.image = UIImage(named: "Edit")
15   - obj.contentMode = .scaleAspectFill
16   - return obj
17   - }()
18   - var titleLabel: UILabel = {
19   - var obj = UILabel()
20   - obj.text = "Edit residents"
21   - obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1)
22   - obj.font = .skModernist(type: .bold, ofSize: 16)
23   - return obj
24   - }()
25   - var descriptionLabel: UILabel = {
26   - var obj = UILabel()
27   - obj.text = "Edit the residents and their information"
28   - obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
29   - obj.font = .skModernist(type: .regular, ofSize: 14)
30   - return obj
31   - }()
32   - var editButton: UIButton = {
33   - var obj = UIButton()
34   - obj.setImage(UIImage(named: "NextPointer"), for: .normal)
35   - return obj
36   - }()
37   - var dividingLineView: UIView = {
38   - var view = UIView()
39   - view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1)
40   - return view
41   - }()
42   -
43   - override init(frame: CGRect) {
44   - super.init(frame: frame)
45   - layout()
46   - }
47   -
48   - required init?(coder: NSCoder) {
49   - fatalError("init(coder:) has not been implemented")
50   - }
51   -
52   - func layout() {
53   - addSubview(editImage)
54   - addSubview(titleLabel)
55   - addSubview(descriptionLabel)
56   - addSubview(editButton)
57   - addSubview(dividingLineView)
58   -
59   - editImage.snp.makeConstraints {
60   - $0.top.equalTo(snp.top).offset(26)
61   - $0.leading.equalTo(snp.leading).offset(32)
62   - $0.height.width.equalTo(18)
63   - }
64   - titleLabel.snp.makeConstraints {
65   - $0.top.equalTo(snp.top).offset(26)
66   - $0.leading.equalTo(editImage.snp.trailing).offset(15)
67   - }
68   - descriptionLabel.snp.makeConstraints {
69   - $0.top.equalTo(titleLabel.snp.bottom).offset(5)
70   - $0.leading.equalTo(titleLabel.snp.leading)
71   - }
72   - editButton.snp.makeConstraints {
73   - $0.top.equalTo(snp.top).offset(38)
74   - $0.trailing.equalTo(snp.trailing).offset(-28)
75   - }
76   - dividingLineView.snp.makeConstraints {
77   - $0.height.equalTo(1)
78   - $0.top.equalTo(descriptionLabel.snp.bottom).offset(22)
79   - $0.trailing.leading.equalToSuperview().inset(32)
80   - }
81   - }
82   -}
1   -//
2   -// NotificationsView.swift
3   -// InterQR-Internship
4   -//
5   -// Created by Дмитрий Тимофеев on 08.06.2022.
6   -//
7   -
8   -import UIKit
9   -
10   -class NotificationsView: UIView {
11   -
12   - var notificationImage: UIImageView = {
13   - var obj = UIImageView()
14   - obj.image = UIImage(named: "Notification")
15   - return obj
16   - }()
17   - var titleLabel: UILabel = {
18   - var obj = UILabel()
19   - obj.text = "Do not disturb"
20   - obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1)
21   - obj.font = .skModernist(type: .bold, ofSize: 16)
22   - return obj
23   - }()
24   - var descriptionLabel: UILabel = {
25   - var obj = UILabel()
26   - obj.text = "You will not be notified of any\ncalls for one day. Auto reset at\nmidnight"
27   - obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
28   - obj.font = .skModernist(type: .regular, ofSize: 14)
29   - obj.numberOfLines = 3
30   - return obj
31   - }()
32   - var notificationSwitch: UISwitch = {
33   - var obj = UISwitch()
34   - obj.isOn = true
35   - obj.clipsToBounds = true
36   - return obj
37   - }()
38   - var volumeImage: UIImageView = {
39   - var obj = UIImageView()
40   - obj.image = UIImage(named: "Volume")
41   - return obj
42   - }()
43   - var dividingLineView: UIView = {
44   - var view = UIView()
45   - view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1)
46   - return view
47   - }()
48   -
49   - override init(frame: CGRect) {
50   - super.init(frame: frame)
51   - layout()
52   - }
53   -
54   - required init?(coder: NSCoder) {
55   - fatalError("init(coder:) has not been implemented")
56   - }
57   -
58   - func layout() {
59   - addSubview(notificationImage)
60   - addSubview(titleLabel)
61   - addSubview(descriptionLabel)
62   - addSubview(notificationSwitch)
63   - addSubview(volumeImage)
64   - addSubview(dividingLineView)
65   -
66   - notificationImage.snp.makeConstraints {
67   - $0.leading.equalTo(snp.leading).offset(31)
68   - $0.top.equalTo(snp.top).offset(38)
69   - }
70   - titleLabel.snp.makeConstraints {
71   - $0.leading.equalTo(notificationImage.snp.trailing).offset(17.5)
72   - $0.top.equalTo(snp.top).offset(38)
73   - }
74   - descriptionLabel.snp.makeConstraints {
75   - $0.top.equalTo(titleLabel.snp.bottom).offset(5)
76   - $0.leading.equalTo(titleLabel.snp.leading)
77   - }
78   - notificationSwitch.snp.makeConstraints {
79   - $0.top.equalTo(snp.top).offset(36)
80   - $0.trailing.equalTo(snp.trailing).offset(-28)
81   - }
82   - volumeImage.snp.makeConstraints {
83   - $0.leading.equalTo(snp.leading).offset(29.5)
84   - $0.top.equalTo(titleLabel.snp.bottom).offset(53)
85   - }
86   - dividingLineView.snp.makeConstraints {
87   - $0.height.equalTo(1)
88   - $0.top.equalTo(volumeImage.snp.bottom).offset(17)
89   - $0.leading.equalTo(snp.leading).offset(32)
90   - $0.trailing.equalTo(snp.trailing).offset(-32)
91   - }
92   - }
93   -}
  1 +//
  2 +// Reusable+cell.swift
  3 +// InterQR-Internship
  4 +//
  5 +// Created by Leyter on 09.06.2022.
  6 +//
  7 +
  8 +import Foundation
  9 +import UIKit
  10 +
  11 +protocol Reusable: class {
  12 + static var reuseIdentifier: String { get }
  13 +}
  14 +
  15 +extension Reusable {
  16 + static var reuseIdentifier: String {
  17 + return String(describing: Self.self)
  18 + }
  19 +}
  20 +
  21 +// swiftlint:disable force_cast
  22 +
  23 +extension UICollectionView {
  24 + func registerReusableCell<T: UICollectionViewCell>(_: T.Type) where T: Reusable {
  25 + self.register(T.self, forCellWithReuseIdentifier: T.reuseIdentifier)
  26 + }
  27 +
  28 + func dequeueReusableCell<T: UICollectionViewCell>(for indexPath: IndexPath) -> T where T: Reusable {
  29 + return self.dequeueReusableCell(withReuseIdentifier: T.reuseIdentifier, for: indexPath) as! T
  30 + }
  31 +
  32 + func registerReusableSupplementaryView<T: UICollectionReusableView>(elementKind: String, _: T.Type) where T: Reusable {
  33 + self.register(T.self, forSupplementaryViewOfKind: elementKind, withReuseIdentifier: T.reuseIdentifier)
  34 + }
  35 +
  36 + func dequeueReusableSupplementaryView<T: UICollectionReusableView>(ofKind elementKind: String, for indexPath: IndexPath) -> T where T: Reusable {
  37 + return self.dequeueReusableSupplementaryView(ofKind: elementKind, withReuseIdentifier: T.reuseIdentifier, for: indexPath) as! T
  38 + }
  39 +}
  40 +
  41 +extension UITableView {
  42 + func registerReusableCell<T: UITableViewCell>(_: T.Type) where T: Reusable {
  43 + self.register(T.self, forCellReuseIdentifier: T.reuseIdentifier)
  44 + }
  45 +
  46 + func registerReusableView<T: UITableViewHeaderFooterView>(_: T.Type) where T: Reusable {
  47 + self.register(T.self, forHeaderFooterViewReuseIdentifier: T.reuseIdentifier)
  48 + }
  49 +
  50 + func dequeueReusableCell<T: UITableViewCell>(for indexPath: IndexPath) -> T where T: Reusable {
  51 + return self.dequeueReusableCell(withIdentifier: T.reuseIdentifier, for: indexPath) as! T
  52 + }
  53 +
  54 + func dequeueReusableView<T: UITableViewHeaderFooterView>() -> T where T: Reusable {
  55 + return self.dequeueReusableHeaderFooterView(withIdentifier: T.reuseIdentifier) as! T
  56 + }
  57 +}
... ...
Please register or login to post a comment