diff options
author | Nicholas Tay <nick@windblume.net> | 2022-03-24 15:46:13 +1100 |
---|---|---|
committer | Nicholas Tay <nick@windblume.net> | 2022-03-24 15:46:13 +1100 |
commit | abb8f691fe6f276205d1cea655ee9938194d1e67 (patch) | |
tree | 752610821eb4862aad72b823efda7934793e0b1a /foray/ForayDetailView.swift | |
parent | dac7f928d2a1ed555aeedd97ec9433e266f47cf1 (diff) | |
download | forayios-abb8f691fe6f276205d1cea655ee9938194d1e67.tar.gz forayios-abb8f691fe6f276205d1cea655ee9938194d1e67.tar.bz2 forayios-abb8f691fe6f276205d1cea655ee9938194d1e67.zip |
Split details view into separate View and VC
Also fixed the scrollview margins while I was at it - it looked weird
being so inside
Diffstat (limited to '')
-rw-r--r-- | foray/ForayDetailView.swift | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/foray/ForayDetailView.swift b/foray/ForayDetailView.swift new file mode 100644 index 0000000..5997016 --- /dev/null +++ b/foray/ForayDetailView.swift @@ -0,0 +1,96 @@ +// +// ForayDetailView.swift +// foray +// +// Created by Nicholas Tay on 24/3/2022. +// + +import UIKit + +class ForayDetailView: UIView { + + let scrollView: UIScrollView = { + let sv = UIScrollView() + sv.alwaysBounceVertical = true // just for fun + return sv + }() + let container = UIView() + + let nameLabel: UILabel = { + let l = UILabel() + l.font = UIFont.preferredFont(forTextStyle: .largeTitle) + l.adjustsFontForContentSizeCategory = true + l.numberOfLines = 3 + l.textAlignment = .center + return l + }() + + let itemImageView: UIImageView = { + let iv = UIImageView() + iv.contentMode = .scaleAspectFit + return iv + }() + + let descLabel: UILabel = { + let l = UILabel() + l.font = UIFont.preferredFont(forTextStyle: .body) + l.adjustsFontForContentSizeCategory = true + l.numberOfLines = 10 + return l + }() + + override init(frame: CGRect) { + super.init(frame: frame) + initialiseViews() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func initialiseViews() { + backgroundColor = .systemBackground + + addSubview(scrollView) + scrollView.addSubview(container) + + container.addSubview(nameLabel) + container.addSubview(itemImageView) + container.addSubview(descLabel) + + setupConstraints() + } + + private func setupConstraints() { + scrollView.snp.makeConstraints { (make) in + make.edges.equalToSuperview() + } + container.snp.makeConstraints { (make) in + make.top.bottom.equalToSuperview() + make.leading.equalTo(snp.leadingMargin) + make.trailing.equalTo(snp.trailingMargin) + } + + nameLabel.snp.makeConstraints { (make) in + make.top.equalToSuperview().inset(16) + make.leading.trailing.equalToSuperview().inset(8) + } + itemImageView.snp.makeConstraints { (make) in + make.top.equalTo(nameLabel.snp.bottom).offset(32) + make.leading.trailing.equalToSuperview() + make.height.equalTo(150) + } + descLabel.snp.makeConstraints { (make) in + make.top.equalTo(itemImageView.snp.bottom).offset(32) + make.leading.trailing.equalToSuperview() + make.bottom.equalTo(container.snp.bottom).inset(16) + } + } + + public func setDetails(name: String, description: String, image: UIImage) { + nameLabel.text = name + descLabel.text = description + itemImageView.image = image + } + +} |