From 94eea3d254b8d3b9e28621375add1846e398bb77 Mon Sep 17 00:00:00 2001 From: Justin Swart Date: Wed, 22 Apr 2020 15:10:03 -0700 Subject: [PATCH 1/2] Convert to textviews --- .../Views/BetaToolsFooterView.swift | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/Kickstarter-iOS/Views/BetaToolsFooterView.swift b/Kickstarter-iOS/Views/BetaToolsFooterView.swift index 853623d4b5..9ffe35b91a 100644 --- a/Kickstarter-iOS/Views/BetaToolsFooterView.swift +++ b/Kickstarter-iOS/Views/BetaToolsFooterView.swift @@ -9,11 +9,11 @@ protocol BetaToolsFooterViewDelegate: AnyObject { final class BetaToolsFooterView: UIView { // MARK: - Properties - private let appVersionDetailLabel: UILabel = { UILabel(frame: .zero) }() + private let appVersionDetailTextView: UITextView = { UITextView(frame: .zero) }() private let appVersionStackView: UIStackView = { UIStackView(frame: .zero) }() private let appVersionTitleLabel: UILabel = { UILabel(frame: .zero) }() private let betaFeedbackButton = UIButton(type: .custom) - private let deviceIdentifierDetailLabel: UILabel = { UILabel(frame: .zero) }() + private let deviceIdentifierDetailTextView: UITextView = { UITextView(frame: .zero) }() private let deviceIdentifierStackView: UIStackView = { UIStackView(frame: .zero) }() private let deviceIdentifierTitleLabel: UILabel = { UILabel(frame: .zero) }() private let rootStackView: UIStackView = { UIStackView(frame: .zero) }() @@ -44,10 +44,13 @@ final class BetaToolsFooterView: UIView { |> ksr_addSubviewToParent() |> ksr_constrainViewToMarginsInParent() - _ = ([self.appVersionTitleLabel, self.appVersionDetailLabel], self.appVersionStackView) + _ = ([self.appVersionTitleLabel, self.appVersionDetailTextView], self.appVersionStackView) |> ksr_addArrangedSubviewsToStackView() - _ = ([self.deviceIdentifierTitleLabel, self.deviceIdentifierDetailLabel], self.deviceIdentifierStackView) + _ = ( + [self.deviceIdentifierTitleLabel, self.deviceIdentifierDetailTextView], + self.deviceIdentifierStackView + ) |> ksr_addArrangedSubviewsToStackView() _ = ( @@ -70,8 +73,8 @@ final class BetaToolsFooterView: UIView { override func bindStyles() { super.bindStyles() - _ = self.appVersionDetailLabel - |> appVersionDetailLabelStyle + _ = self.appVersionDetailTextView + |> appVersionDetailTextViewStyle _ = self.appVersionStackView |> appVersionStackViewStyle @@ -82,8 +85,8 @@ final class BetaToolsFooterView: UIView { _ = self.betaFeedbackButton |> betaFeedbackButtonStyle - _ = self.deviceIdentifierDetailLabel - |> deviceIdentifierDetailLabelStyle + _ = self.deviceIdentifierDetailTextView + |> deviceIdentifierDetailTextViewStyle _ = self.deviceIdentifierStackView |> deviceIdentifierStackViewStyle @@ -104,9 +107,9 @@ final class BetaToolsFooterView: UIView { // MARK: - Styles -private let appVersionDetailLabelStyle: LabelStyle = { label in - label - |> baseDetailLabelStyle +private let appVersionDetailTextViewStyle: TextViewStyle = { textView in + textView + |> baseTextViewStyle |> \.text .~ AppEnvironment.current.mainBundle.appVersionString } @@ -127,11 +130,12 @@ private let betaFeedbackButtonStyle: ButtonStyle = { button in |> UIButton.lens.title(for: .normal) .~ "Submit feedback for beta" } -private let deviceIdentifierDetailLabelStyle: LabelStyle = { label in - label - |> baseDetailLabelStyle - |> \.minimumScaleFactor .~ 0.5 +private let deviceIdentifierDetailTextViewStyle: TextViewStyle = { textView in + _ = textView + |> baseTextViewStyle |> \.text .~ AppEnvironment.current.device.identifierForVendor?.uuidString + + return textView } private let deviceIdentifierStackViewStyle: StackViewStyle = { stackView in @@ -151,12 +155,20 @@ private let rootStackViewStyle: StackViewStyle = { stackView in |> \.spacing .~ Styles.grid(2) } -private let baseDetailLabelStyle: LabelStyle = { label in - label +private let baseTextViewStyle: TextViewStyle = { textView in + _ = textView |> \.font .~ .ksr_headline(size: 15) |> \.textColor .~ .ksr_text_dark_grey_500 - |> \.lineBreakMode .~ .byWordWrapping - |> \.textAlignment .~ .left + |> \.isScrollEnabled .~ false + + _ = textView + |> \.textContainerInset .~ UIEdgeInsets.zero + |> \.textContainer.lineFragmentPadding .~ 0 + |> \.isEditable .~ false + |> \.isUserInteractionEnabled .~ true + |> \.adjustsFontForContentSizeCategory .~ true + + return textView } private let baseTitleLabelStyle: LabelStyle = { label in From 3e260ab14a999dc39aea86873e6be49352efa018 Mon Sep 17 00:00:00 2001 From: Justin Swart Date: Wed, 22 Apr 2020 18:45:51 -0700 Subject: [PATCH 2/2] Update snapshot --- .../testBetaToolsViewController@2x.png | Bin 64152 -> 64148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.BetaToolsViewControllerTests/testBetaToolsViewController@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.BetaToolsViewControllerTests/testBetaToolsViewController@2x.png index fdc7782f2575433254c0baed453cfe3909c901fa..e8f10535a9b3c5f2b0d9273d460535cf4013c7c1 100644 GIT binary patch delta 7775 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