Last active
October 14, 2017 07:43
-
-
Save starhoshi/205ec846e6a2d8993621b4ce5a6edab8 to your computer and use it in GitHub Desktop.
コードで綺麗に View かけた
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class StatsInputView: UIView { | |
private let verticalStackView: UIStackView = { | |
let stackView = UIStackView() | |
stackView.distribution = .fillEqually | |
stackView.axis = .vertical | |
stackView.alignment = .fill | |
return stackView | |
}() | |
private let columnTitleStackView = RowStackView() | |
private let baseStatStackView = RowStackView() | |
private let ivStackView = RowStackView() | |
private let effortStackView = RowStackView() | |
private let realStackView = RowStackView() | |
private let emptyColumnTitleLabel = RowTitleLabel() | |
private let hTitleLabel = ColumnTitleLabel(text: "HP") | |
private let aTitleLabel = ColumnTitleLabel(text: "攻撃") | |
private let bTitleLabel = ColumnTitleLabel(text: "防御") | |
private let cTitleLabel = ColumnTitleLabel(text: "特攻") | |
private let dTitleLabel = ColumnTitleLabel(text: "特防") | |
private let sTitleLabel = ColumnTitleLabel(text: "素早") | |
private let baseStatTitleLabel = RowTitleLabel(text: "種族") | |
private let hBaseStatLabel = BaseStatLabel() | |
private let aBaseStatLabel = BaseStatLabel() | |
private let bBaseStatLabel = BaseStatLabel() | |
private let cBaseStatLabel = BaseStatLabel() | |
private let dBaseStatLabel = BaseStatLabel() | |
private let sBaseStatLabel = BaseStatLabel() | |
private let ivTitleLabel = RowTitleLabel(text: "個体") | |
private let hIVField = NumberTextField() | |
private let aIVField = NumberTextField() | |
private let bIVField = NumberTextField() | |
private let cIVField = NumberTextField() | |
private let dIVField = NumberTextField() | |
private let sIVField = NumberTextField() | |
private let effortTitleLabel = RowTitleLabel(text: "努力") | |
private let hEffortField = NumberTextField() | |
private let aEffortField = NumberTextField() | |
private let bEffortField = NumberTextField() | |
private let cEffortField = NumberTextField() | |
private let dEffortField = NumberTextField() | |
private let sEffortField = NumberTextField() | |
private let realTitleLabel = RowTitleLabel(text: "実数") | |
private let hRealField = NumberTextField() | |
private let aRealField = NumberTextField() | |
private let bRealField = NumberTextField() | |
private let cRealField = NumberTextField() | |
private let dRealField = NumberTextField() | |
private let sRealField = NumberTextField() | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
addSubview(verticalStackView) | |
verticalStackView.snp.makeConstraints { make in | |
make.edges.equalToSuperview() | |
} | |
columnTitleStackView.addArrangedSubview(emptyColumnTitleLabel) | |
columnTitleStackView.addArrangedSubview(hTitleLabel) | |
columnTitleStackView.addArrangedSubview(aTitleLabel) | |
columnTitleStackView.addArrangedSubview(bTitleLabel) | |
columnTitleStackView.addArrangedSubview(cTitleLabel) | |
columnTitleStackView.addArrangedSubview(dTitleLabel) | |
columnTitleStackView.addArrangedSubview(sTitleLabel) | |
baseStatStackView.addArrangedSubview(baseStatTitleLabel) | |
baseStatStackView.addArrangedSubview(hBaseStatLabel) | |
baseStatStackView.addArrangedSubview(aBaseStatLabel) | |
baseStatStackView.addArrangedSubview(bBaseStatLabel) | |
baseStatStackView.addArrangedSubview(cBaseStatLabel) | |
baseStatStackView.addArrangedSubview(dBaseStatLabel) | |
baseStatStackView.addArrangedSubview(sBaseStatLabel) | |
ivStackView.addArrangedSubview(ivTitleLabel) | |
ivStackView.addArrangedSubview(hIVField) | |
ivStackView.addArrangedSubview(aIVField) | |
ivStackView.addArrangedSubview(bIVField) | |
ivStackView.addArrangedSubview(cIVField) | |
ivStackView.addArrangedSubview(dIVField) | |
ivStackView.addArrangedSubview(sIVField) | |
effortStackView.addArrangedSubview(effortTitleLabel) | |
effortStackView.addArrangedSubview(hEffortField) | |
effortStackView.addArrangedSubview(aEffortField) | |
effortStackView.addArrangedSubview(bEffortField) | |
effortStackView.addArrangedSubview(cEffortField) | |
effortStackView.addArrangedSubview(dEffortField) | |
effortStackView.addArrangedSubview(sEffortField) | |
realStackView.addArrangedSubview(realTitleLabel) | |
realStackView.addArrangedSubview(hRealField) | |
realStackView.addArrangedSubview(aRealField) | |
realStackView.addArrangedSubview(bRealField) | |
realStackView.addArrangedSubview(cRealField) | |
realStackView.addArrangedSubview(dRealField) | |
realStackView.addArrangedSubview(sRealField) | |
verticalStackView.addArrangedSubview(columnTitleStackView) | |
verticalStackView.addArrangedSubview(baseStatStackView) | |
verticalStackView.addArrangedSubview(ivStackView) | |
verticalStackView.addArrangedSubview(effortStackView) | |
verticalStackView.addArrangedSubview(realStackView) | |
} | |
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
extension StatsInputView { | |
private class RowStackView: UIStackView { | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
distribution = .fillEqually | |
axis = .horizontal | |
alignment = .fill | |
} | |
required init(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
private class ColumnTitleLabel: UILabel { | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
font = .systemFont(ofSize: 12) | |
textAlignment = .center | |
} | |
convenience init(text: String?) { | |
self.init(frame: .zero) | |
self.text = text | |
} | |
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
private class RowTitleLabel: UILabel { | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
font = .systemFont(ofSize: 12) | |
textAlignment = .center | |
} | |
convenience init(text: String?) { | |
self.init(frame: .zero) | |
self.text = text | |
} | |
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
private class BaseStatLabel: UILabel { | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
font = .systemFont(ofSize: 14) | |
text = "100" | |
} | |
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
private class NumberTextField: UITextField { | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
font = .systemFont(ofSize: 14) | |
} | |
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment