diff --git a/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/Contents.json b/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/Contents.json new file mode 100644 index 0000000000..c6ec98836e --- /dev/null +++ b/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon--currency-header.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/icon--currency-header.pdf b/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/icon--currency-header.pdf new file mode 100644 index 0000000000..c2a50bf36d Binary files /dev/null and b/Kickstarter-iOS/Assets.xcassets/icons/icon--currency-header.imageset/icon--currency-header.pdf differ diff --git a/Kickstarter-iOS/Views/Controllers/PaymentMethodsViewController.swift b/Kickstarter-iOS/Views/Controllers/PaymentMethodsViewController.swift index 059b2fd5c7..ead281e4c4 100644 --- a/Kickstarter-iOS/Views/Controllers/PaymentMethodsViewController.swift +++ b/Kickstarter-iOS/Views/Controllers/PaymentMethodsViewController.swift @@ -204,37 +204,3 @@ extension PaymentMethodsViewController: AddNewCardViewControllerDelegate { } } } - -private extension UIView { - func constrainEdges(to view: UIView) { - self.translatesAutoresizingMaskIntoConstraints = false - - NSLayoutConstraint.activate([ - self.leadingAnchor.constraint(equalTo: view.leadingAnchor), - self.trailingAnchor.constraint(equalTo: view.trailingAnchor), - self.topAnchor.constraint(equalTo: view.topAnchor), - self.bottomAnchor.constraint(equalTo: view.bottomAnchor) - ]) - } -} - -private extension UITableView { - func ksr_sizeHeaderFooterViewsToFit() { - let keyPaths: [ReferenceWritableKeyPath] = [ - (\.tableHeaderView), - (\.tableFooterView) - ] - - keyPaths.forEach { keyPath in - if let view = self[keyPath: keyPath] { - let size = view.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) - - if view.frame.height != size.height { - view.frame.size.height = size.height - - self[keyPath: keyPath] = view - } - } - } - } -} diff --git a/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewController.swift b/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewController.swift index aa5d7bf945..2d4f446be4 100644 --- a/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewController.swift +++ b/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewController.swift @@ -30,29 +30,55 @@ final class SelectCurrencyViewController: UIViewController, MessageBannerViewCon self.view.addSubview(self.tableView) self.tableView.constrainEdges(to: self.view) + let headerContainerView = UIView(frame: .zero) + headerContainerView.addSubview(self.headerView) + self.headerView.constrainEdges(to: headerContainerView, priority: .defaultHigh) + + self.tableView.tableHeaderView = headerContainerView + self.headerView.widthAnchor.constraint(equalTo: self.tableView.widthAnchor).isActive = true + self.viewModel.inputs.viewDidLoad() } + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + self.tableView.ksr_sizeHeaderFooterViewsToFit() + } + override func bindStyles() { super.bindStyles() _ = self.tableView |> settingsTableViewStyle |> \.separatorStyle .~ .singleLine + + _ = self.headerView + |> \.text %~ { _ in + """ + \(Strings.Making_this_change())\n + \(Strings.A_successfully_funded_project_will_collect_your_pledge_in_its_native_currency()) + """ + } } // MARK: - Subviews private lazy var tableView: UITableView = { - return UITableView(frame: .zero, style: .plain) + UITableView(frame: .zero, style: .plain) |> \.translatesAutoresizingMaskIntoConstraints .~ false |> \.tableFooterView .~ UIView(frame: .zero) |> \.dataSource .~ self |> \.delegate .~ self }() + + private lazy var headerView: SelectCurrencyTableViewHeader = { + SelectCurrencyTableViewHeader(frame: .zero) + }() } extension SelectCurrencyViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return Currency.allCases.count } diff --git a/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewControllerTests.swift b/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewControllerTests.swift new file mode 100644 index 0000000000..dadb39f5e7 --- /dev/null +++ b/Kickstarter-iOS/Views/Controllers/SelectCurrencyViewControllerTests.swift @@ -0,0 +1,31 @@ +import Library +import Prelude +import Result +import XCTest +@testable import Kickstarter_Framework +@testable import KsApi + +internal final class SelectCurrencyViewControllerTests: TestCase { + override func setUp() { + super.setUp() + UIView.setAnimationsEnabled(false) + } + + override func tearDown() { + UIView.setAnimationsEnabled(true) + super.tearDown() + } + + func testView() { + combos(Language.allLanguages, Device.allCases) + .forEach { language, device in + withEnvironment(language: language) { + let vc = SelectCurrencyViewController.instantiate() + vc.configure(with: .USD) + let (parent, _) = traitControllers(device: device, orientation: .portrait, child: vc) + + FBSnapshotVerifyView(parent.view, identifier: "lang_\(language)_device_\(device)") + } + } + } +} diff --git a/Kickstarter-iOS/Views/SelectCurrencyTableViewHeader.swift b/Kickstarter-iOS/Views/SelectCurrencyTableViewHeader.swift new file mode 100644 index 0000000000..be545a3691 --- /dev/null +++ b/Kickstarter-iOS/Views/SelectCurrencyTableViewHeader.swift @@ -0,0 +1,62 @@ +import Library +import Prelude +import Prelude_UIKit +import UIKit + +final class SelectCurrencyTableViewHeader: UIView { + + override init(frame: CGRect) { + super.init(frame: frame) + + self.addSubview(self.headerStackView) + self.headerStackView.constrainEdges(to: self) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func bindStyles() { + super.bindStyles() + + _ = self.headerImageView + |> \.contentMode .~ .scaleAspectFill + + _ = self.headerStackView + |> \.axis .~ .vertical + |> \.alignment .~ .center + |> \.spacing .~ Styles.grid(2) + |> \.layoutMargins .~ .init( + top: Styles.grid(4), left: Styles.grid(2), bottom: Styles.grid(2), right: Styles.grid(2) + ) + |> \.isLayoutMarginsRelativeArrangement .~ true + + _ = self.headerLabel + |> settingsDescriptionLabelStyle + |> \.textColor .~ .ksr_text_dark_grey_500 + |> \.backgroundColor .~ .ksr_grey_200 + } + + // MARK: Accessors + + public var text: String? { + didSet { + _ = self.headerLabel |> \.text .~ text + } + } + + // MARK: Subviews + + private lazy var headerStackView: UIStackView = { + return UIStackView(arrangedSubviews: [ + self.headerImageView, + self.headerLabel + ]) + }() + + private lazy var headerImageView: UIImageView = { + UIImageView(image: image(named: "icon--currency-header", inBundle: Bundle.framework)) + }() + + private lazy var headerLabel: UILabel = { UILabel(frame: .zero) }() +} diff --git a/Kickstarter.xcodeproj/project.pbxproj b/Kickstarter.xcodeproj/project.pbxproj index f1b48b8b66..65d2d1ac78 100644 --- a/Kickstarter.xcodeproj/project.pbxproj +++ b/Kickstarter.xcodeproj/project.pbxproj @@ -171,7 +171,6 @@ 77E44B7421823A56006446B8 /* ChangePasswordInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E44B7321823A56006446B8 /* ChangePasswordInput.swift */; }; 77E6440120F64F0B005F6B38 /* HelpDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E6440020F64F0B005F6B38 /* HelpDataSource.swift */; }; 77E6440320F65074005F6B38 /* HelpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E6440220F65074005F6B38 /* HelpViewController.swift */; }; - 77E84E082166A45B00DA8891 /* MessageBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E84DD12166A45B00DA8891 /* MessageBannerViewController.swift */; }; 77E84E0C2166A8C600DA8891 /* MessageBannerViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E84E0B2166A8C600DA8891 /* MessageBannerViewControllerTests.swift */; }; 77F6E73521222E7C005A5C55 /* EmailFrequency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77F6E73421222E7C005A5C55 /* EmailFrequency.swift */; }; 77F6E73721222E97005A5C55 /* SettingsCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77F6E73621222E97005A5C55 /* SettingsCellType.swift */; }; @@ -835,7 +834,6 @@ D01673A31E3A2CC800651DBA /* LiveStreamEventsEnvelope.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01673A21E3A2CC800651DBA /* LiveStreamEventsEnvelope.swift */; }; D01673DF1E3A354B00651DBA /* LiveStreamEventsEnvelopeTemplates.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01673DE1E3A354B00651DBA /* LiveStreamEventsEnvelopeTemplates.swift */; }; D01673E41E3A35ED00651DBA /* LiveStreamEventsEnvelopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01673E21E3A35E700651DBA /* LiveStreamEventsEnvelopeTests.swift */; }; - D0198F3421793FCF0090A9EC /* SettingsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */; }; D0198F3521793FCF0090A9EC /* GraphMutation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775DFA9C215E758400620CED /* GraphMutation.swift */; }; D0198F3621793FCF0090A9EC /* Service+RequestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775DFAD4215EB2AB00620CED /* Service+RequestHelpers.swift */; }; D01BEA081F0259A30064C1D9 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D01BE9E71F02598A0064C1D9 /* Result.framework */; }; @@ -914,8 +912,9 @@ D093B49C21A86FD800910962 /* PushRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D093B49B21A86FD800910962 /* PushRegistration.swift */; }; D093B4F021A8B14100910962 /* MockPushRegistration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D093B4B721A8B0E000910962 /* MockPushRegistration.swift */; }; D0A787B52204D40E006AE4F4 /* SelectCurrencyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A787B42204D40E006AE4F4 /* SelectCurrencyViewController.swift */; }; - D0A787B92204D525006AE4F4 /* UIView+AutoLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A787B82204D525006AE4F4 /* UIView+AutoLayout.swift */; }; D0A787BB2204D66B006AE4F4 /* SelectCurrencyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A787BA2204D66A006AE4F4 /* SelectCurrencyViewModel.swift */; }; + D0A787BD2204D865006AE4F4 /* SelectCurrencyTableViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A787BC2204D865006AE4F4 /* SelectCurrencyTableViewHeader.swift */; }; + D0A787BF2204D975006AE4F4 /* UITableView+AutoLayoutHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A787BE2204D975006AE4F4 /* UITableView+AutoLayoutHeaderView.swift */; }; D0B45B6B1EF858C00020A8DA /* KsApi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D01587501EEB2DE4006E7684 /* KsApi.framework */; }; D0B45B6C1EF858C00020A8DA /* KsApi.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D01587501EEB2DE4006E7684 /* KsApi.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; D0B45B6F1EF858DE0020A8DA /* Prelude_UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D042780C1EEB08EA00600E9C /* Prelude_UIKit.framework */; }; @@ -996,6 +995,8 @@ D60C8BF12143167200D96152 /* SettingsAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60C8BAA2142CD0300D96152 /* SettingsAccountViewController.swift */; }; D60C8BF321481BCC00D96152 /* SettingsAccountViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60C8BF221481BCC00D96152 /* SettingsAccountViewControllerTests.swift */; }; D60C8CE12149A65000D96152 /* SettingsPrivacyDataSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60C8CE02149A65000D96152 /* SettingsPrivacyDataSourceTests.swift */; }; + D60CAB912208A0750083FA40 /* UIView+AutoLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60CAB592208A0740083FA40 /* UIView+AutoLayout.swift */; }; + D60CAB922208A1B60083FA40 /* SelectCurrencyViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B9FA1422089C05003282A5 /* SelectCurrencyViewControllerTests.swift */; }; D62B1477221216A000AC05C8 /* DeletePaymentMethodEnvelope.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62B1476221216A000AC05C8 /* DeletePaymentMethodEnvelope.swift */; }; D62B14B02212184500AC05C8 /* DeletePaymentMethodEnvelopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62B14AF2212184500AC05C8 /* DeletePaymentMethodEnvelopeTests.swift */; }; D63BBCD0217E5460007E01F0 /* PaymentMethodsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63BBCCF217E5460007E01F0 /* PaymentMethodsViewController.swift */; }; @@ -1050,6 +1051,8 @@ D6DC652F21768502008CF69C /* Queryable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DC652E21768502008CF69C /* Queryable.swift */; }; D6DC653321768B6E008CF69C /* ChangeEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DC653221768B6E008CF69C /* ChangeEmailViewModel.swift */; }; D6DC65522178CDDD008CF69C /* GraphUserEmailTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DC65512178CDDC008CF69C /* GraphUserEmailTemplate.swift */; }; + D6E7DAFA22089F3900689BD6 /* MessageBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E7DAF922089F3900689BD6 /* MessageBannerViewController.swift */; }; + D6E7DAFC22089F9800689BD6 /* SettingsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E7DAFB22089F9800689BD6 /* SettingsViewControllerTests.swift */; }; D6E925CE211107CD00E13010 /* SettingsNewslettersDataSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6765B4C211091AB00AE3DB4 /* SettingsNewslettersDataSourceTests.swift */; }; D6ED1B37216D0C64007F7547 /* ChangeEmailViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B36216D0C64007F7547 /* ChangeEmailViewModelTests.swift */; }; D6ED1B39216D50BE007F7547 /* UserEmailFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ED1B38216D50BE007F7547 /* UserEmailFields.swift */; }; @@ -1907,7 +1910,6 @@ 7758A8352097A8180018B96D /* DiscoveryProjectCategoryView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DiscoveryProjectCategoryView.xib; sourceTree = ""; }; 775DFA9C215E758400620CED /* GraphMutation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphMutation.swift; sourceTree = ""; }; 775DFAD4215EB2AB00620CED /* Service+RequestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Service+RequestHelpers.swift"; sourceTree = ""; }; - 775DFB082162C08800620CED /* MessageBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBannerViewController.swift; sourceTree = ""; }; 776B6F6F215183A400AB0652 /* ChangeEmailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewController.swift; sourceTree = ""; }; 77752F5D219B39EA00E7DA7D /* SettingsAccountWarningCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAccountWarningCell.swift; sourceTree = ""; }; 77752F96219B3D7300E7DA7D /* SettingsAccountWarningCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SettingsAccountWarningCell.xib; sourceTree = ""; }; @@ -1936,7 +1938,6 @@ 77E44B7321823A56006446B8 /* ChangePasswordInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePasswordInput.swift; sourceTree = ""; }; 77E6440020F64F0B005F6B38 /* HelpDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpDataSource.swift; sourceTree = ""; }; 77E6440220F65074005F6B38 /* HelpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpViewController.swift; sourceTree = ""; }; - 77E84DD12166A45B00DA8891 /* MessageBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBannerViewController.swift; sourceTree = ""; }; 77E84E0B2166A8C600DA8891 /* MessageBannerViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBannerViewControllerTests.swift; sourceTree = ""; }; 77F6E73421222E7C005A5C55 /* EmailFrequency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmailFrequency.swift; sourceTree = ""; }; 77F6E73621222E97005A5C55 /* SettingsCellType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsCellType.swift; sourceTree = ""; }; @@ -2692,8 +2693,9 @@ D093B49B21A86FD800910962 /* PushRegistration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushRegistration.swift; sourceTree = ""; }; D093B4B721A8B0E000910962 /* MockPushRegistration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPushRegistration.swift; sourceTree = ""; }; D0A787B42204D40E006AE4F4 /* SelectCurrencyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectCurrencyViewController.swift; sourceTree = ""; }; - D0A787B82204D525006AE4F4 /* UIView+AutoLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+AutoLayout.swift"; sourceTree = ""; }; D0A787BA2204D66A006AE4F4 /* SelectCurrencyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectCurrencyViewModel.swift; sourceTree = ""; }; + D0A787BC2204D865006AE4F4 /* SelectCurrencyTableViewHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectCurrencyTableViewHeader.swift; sourceTree = ""; }; + D0A787BE2204D975006AE4F4 /* UITableView+AutoLayoutHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+AutoLayoutHeaderView.swift"; sourceTree = ""; }; D0BB2D541E54894E00EE1D9D /* LiveStreamChatDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveStreamChatDataSource.swift; sourceTree = ""; }; D0C5957E1E49C835003A29EC /* LiveStreamSubscribeEnvelope.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveStreamSubscribeEnvelope.swift; sourceTree = ""; }; D0C595BA1E49CD0D003A29EC /* LiveStreamSubscribeEnvelopeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveStreamSubscribeEnvelopeTests.swift; sourceTree = ""; }; @@ -2734,6 +2736,7 @@ D60C8BEA21430BC200D96152 /* SettingsAccountViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAccountViewModel.swift; sourceTree = ""; }; D60C8BF221481BCC00D96152 /* SettingsAccountViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAccountViewControllerTests.swift; sourceTree = ""; }; D60C8CE02149A65000D96152 /* SettingsPrivacyDataSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsPrivacyDataSourceTests.swift; sourceTree = ""; }; + D60CAB592208A0740083FA40 /* UIView+AutoLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+AutoLayout.swift"; sourceTree = ""; }; D62B1476221216A000AC05C8 /* DeletePaymentMethodEnvelope.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletePaymentMethodEnvelope.swift; sourceTree = ""; }; D62B14AF2212184500AC05C8 /* DeletePaymentMethodEnvelopeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletePaymentMethodEnvelopeTests.swift; sourceTree = ""; }; D63BBCCF217E5460007E01F0 /* PaymentMethodsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentMethodsViewController.swift; sourceTree = ""; }; @@ -2784,6 +2787,7 @@ D6B9F90922035840003282A5 /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; D6B9F942220358D1003282A5 /* AuthorTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorTemplates.swift; sourceTree = ""; }; D6B9F94422035E34003282A5 /* AuthorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorTests.swift; sourceTree = ""; }; + D6B9FA1422089C05003282A5 /* SelectCurrencyViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectCurrencyViewControllerTests.swift; sourceTree = ""; }; D6C38459210B9AC400ADB671 /* SettingsNewslettersTopCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsNewslettersTopCell.swift; sourceTree = ""; }; D6C3845A210B9AC400ADB671 /* SettingsNewslettersTopCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SettingsNewslettersTopCell.xib; sourceTree = ""; }; D6C9A20D1F755FE200981E64 /* GraphSchemaTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphSchemaTests.swift; sourceTree = ""; }; @@ -2792,6 +2796,8 @@ D6DC652E21768502008CF69C /* Queryable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Queryable.swift; sourceTree = ""; }; D6DC653221768B6E008CF69C /* ChangeEmailViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewModel.swift; sourceTree = ""; }; D6DC65512178CDDC008CF69C /* GraphUserEmailTemplate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphUserEmailTemplate.swift; sourceTree = ""; }; + D6E7DAF922089F3900689BD6 /* MessageBannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageBannerViewController.swift; sourceTree = ""; }; + D6E7DAFB22089F9800689BD6 /* SettingsViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewControllerTests.swift; sourceTree = ""; }; D6ED1B36216D0C64007F7547 /* ChangeEmailViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailViewModelTests.swift; sourceTree = ""; }; D6ED1B38216D50BE007F7547 /* UserEmailFields.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserEmailFields.swift; sourceTree = ""; }; D6ED1B3A216D525B007F7547 /* ChangeEmailInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeEmailInput.swift; sourceTree = ""; }; @@ -2815,7 +2821,6 @@ D7417CD520BF12F4004DABA6 /* ExportDataEnvelope.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportDataEnvelope.swift; sourceTree = ""; }; D7417D0D20BF4833004DABA6 /* ExportStateEnvelopeTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportStateEnvelopeTemplates.swift; sourceTree = ""; }; D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewControllerTests.swift; sourceTree = ""; }; - D74E6757212CB5A400C61708 /* SettingsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewControllerTests.swift; sourceTree = ""; }; D770DDE7217D729300B5319A /* UserCurrencyTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserCurrencyTemplates.swift; sourceTree = ""; }; D770DE3D217E339500B5319A /* AddNewCardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewCardViewController.swift; sourceTree = ""; }; D770DE76217E874F00B5319A /* AddNewCardViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewCardViewControllerTests.swift; sourceTree = ""; }; @@ -3012,7 +3017,6 @@ A74BEF181DE3474C008D5E63 /* UIImageView+URL.swift */, D0200A5021935E7800F5CC27 /* UIView+LivePulsatingAnimation.swift */, A731BF581D1ED60800A734AC /* WebViewController.swift */, - D0A787B82204D525006AE4F4 /* UIView+AutoLayout.swift */, ); name = Library; sourceTree = ""; @@ -3274,6 +3278,7 @@ 5993DEBD1CE296F000925494 /* ProfileHeaderView.swift */, 015706BA1E68DE580087DD68 /* ProfileSortBarView.swift */, A78012641D2EEA620027396E /* ReferralChartView.swift */, + D0A787BC2204D865006AE4F4 /* SelectCurrencyTableViewHeader.swift */, 7793B16C21077AEB007857C0 /* SettingsHeaderView.swift */, D0D2AB1A1E96444B008D298A /* VideoGridView.swift */, A751A51C1C85EAD8009C5DEA /* Cells */, @@ -3427,6 +3432,8 @@ A7ED203A1E8323E900BFFA01 /* LoginToutViewControllerTests.swift */, 018F1F821C8E182200643DAA /* LoginViewController.swift */, A7ED202D1E8323E900BFFA01 /* LoginViewControllerTests.swift */, + D6E7DAF922089F3900689BD6 /* MessageBannerViewController.swift */, + 77E84E0B2166A8C600DA8891 /* MessageBannerViewControllerTests.swift */, 775DFB082162C08800620CED /* MessageBannerViewController.swift */, A74FFDEE1CE3E33300C7BCB9 /* MessageDialogViewController.swift */, A75A29231CE0AE5A00D35E5C /* MessagesViewController.swift */, @@ -3458,6 +3465,7 @@ A745D0201CA897FF00C12802 /* SearchViewController.swift */, A7ED20381E8323E900BFFA01 /* SearchViewControllerTests.swift */, D0A787B42204D40E006AE4F4 /* SelectCurrencyViewController.swift */, + D6B9FA1422089C05003282A5 /* SelectCurrencyViewControllerTests.swift */, D60C8BAA2142CD0300D96152 /* SettingsAccountViewController.swift */, D60C8BF221481BCC00D96152 /* SettingsAccountViewControllerTests.swift */, D6B6766620FF8D3C0082717D /* SettingsNewslettersViewController.swift */, @@ -3467,8 +3475,7 @@ D703FC6820F7E2EC004A272D /* SettingsPrivacyViewController.swift */, D72370932119139D001EA4CA /* SettingsPrivacyViewControllerTests.swift */, 77216D9720F3D2E40061BE82 /* SettingsViewController.swift */, - D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */, - 77E84DD12166A45B00DA8891 /* MessageBannerViewController.swift */, + D6E7DAFB22089F9800689BD6 /* SettingsViewControllerTests.swift */, A749001D1D00E27100BC3BE7 /* SignupViewController.swift */, A7ED203D1E8323E900BFFA01 /* SignupViewControllerTests.swift */, A72C3AA51D00F7A30075227E /* SortPagerViewController.swift */, @@ -3744,16 +3751,18 @@ A78537E11CB5422100385B73 /* UIScreenType.swift */, A7169BF51DDD064200480C0D /* UIScrollView+Extensions.swift */, D6508F342049C45D002DCC01 /* UIStackView+BackgroundColor.swift */, + D0A787BE2204D975006AE4F4 /* UITableView+AutoLayoutHeaderView.swift */, 01A7A4BF1C9690220036E553 /* UITextField+LocalizedPlaceholderKey.swift */, + D60CAB592208A0740083FA40 /* UIView+AutoLayout.swift */, A733795F1D0EDFEE00C91445 /* UIViewController-Preparation.swift */, A75C811B1D210C4700B5AD03 /* UpdateActivityItemProvider.swift */, D6B6F9BF20F403F400A295F7 /* UserAttribute.swift */, + A734A2661D21A1790080BBD5 /* WKNavigationActionData.swift */, A7C725851C85D36D005A016B /* DataSource */, A721DF3D1C8CF4F6000CB97C /* Koala */, A73378F91D0AE33B00C91445 /* Styles */, A7ED1F421E831BA200BFFA01 /* TestHelpers */, A7F4418D1D005A9400FE6FC5 /* ViewModels */, - A734A2661D21A1790080BBD5 /* WKNavigationActionData.swift */, ); path = Library; sourceTree = ""; @@ -3813,6 +3822,7 @@ A7C725771C85D36D005A016B /* Library */, A7BA542A1E1E493600E54377 /* LiveStream */, A7E06C7A1C5A6EB300EBDCC2 /* Products */, + D6E7DAC022089C4700689BD6 /* Recovered References */, ); indentWidth = 2; sourceTree = ""; @@ -4575,6 +4585,14 @@ name = Products; sourceTree = ""; }; + D6E7DAC022089C4700689BD6 /* Recovered References */ = { + isa = PBXGroup; + children = ( + D74E66AF212B7AB500C61708 /* SettingsViewControllerTests.swift */, + ); + name = "Recovered References"; + sourceTree = ""; + }; D6ED1B3C216D617E007F7547 /* inputs */ = { isa = PBXGroup; children = ( @@ -5634,11 +5652,11 @@ A755115D1C8642C3005355CF /* AVPlayerView.swift in Sources */, A7F441C91D005A9400FE6FC5 /* MessageDialogViewModel.swift in Sources */, D78E4E482188CB4300E99295 /* UIButton+HapticFeedback.swift in Sources */, + D60CAB912208A0750083FA40 /* UIView+AutoLayout.swift in Sources */, A78537BC1CB5416700385B73 /* UIDeviceType.swift in Sources */, A7808BF01D625C6A001CF96A /* ProjectCreatorViewModel.swift in Sources */, A755115E1C8642C3005355CF /* Environment.swift in Sources */, A7F441D11D005A9400FE6FC5 /* MessageThreadsViewModel.swift in Sources */, - D0A787B92204D525006AE4F4 /* UIView+AutoLayout.swift in Sources */, D6DC653321768B6E008CF69C /* ChangeEmailViewModel.swift in Sources */, A71F59E81D2424CA00909BE3 /* KSCache.swift in Sources */, A757EB2B1D1AD89E00A5C978 /* DiscoveryStyles.swift in Sources */, @@ -5704,6 +5722,7 @@ D0200A5621935F2900F5CC27 /* MessageBannerType.swift in Sources */, D70347901DBAABC30099C668 /* DiscoveryExpandableRowCellViewModel.swift in Sources */, 0199545F1D2D818E00BC1390 /* DashboardProjectsDrawerViewModel.swift in Sources */, + D0A787BF2204D975006AE4F4 /* UITableView+AutoLayoutHeaderView.swift in Sources */, A76126B91C90C94000EDCCB9 /* UIView-Extensions.swift in Sources */, A77D7B071CBAAF5D0077586B /* Paginate.swift in Sources */, 01F547ED1D53994B000A98EF /* TabBarItemStyles.swift in Sources */, @@ -6060,7 +6079,6 @@ 015A06F71D219513007AE210 /* DashboardRewardsCell.swift in Sources */, A7E315C61C88AAA8000DD85A /* DiscoveryProjectsDataSource.swift in Sources */, 7758A8372097BADF0018B96D /* DiscoveryProjectCategoryView.swift in Sources */, - 77E84E082166A45B00DA8891 /* MessageBannerViewController.swift in Sources */, 59673CBD1D50ED380035AFD9 /* VideoViewController.swift in Sources */, D796867E20FF910300E54C61 /* SettingsPrivacyDataSource.swift in Sources */, 77F9A9B02135FB760082A11E /* FindFriendsCell.swift in Sources */, @@ -6122,6 +6140,7 @@ 9DDE1F721D5925A90092D9A5 /* CheckoutViewController.swift in Sources */, 01940B2B1D46814E0074FCE3 /* HelpWebViewModel.swift in Sources */, D08A817B1DFAAD04000128DB /* LiveStreamContainerViewController.swift in Sources */, + D0A787BD2204D865006AE4F4 /* SelectCurrencyTableViewHeader.swift in Sources */, 598D96B61D426D80003F3F66 /* ActivitySampleFollowCell.swift in Sources */, A72C3AB91D00FB1F0075227E /* DiscoverySelectableRowCell.swift in Sources */, A77DA9641E4D1F4D00DB3A66 /* Nib.swift in Sources */, @@ -6247,6 +6266,7 @@ A74FFECA1CE4FB9900C7BCB9 /* SearchMessagesDataSource.swift in Sources */, A775B5211CA8705B00BBB587 /* RootTabBarViewController.swift in Sources */, A75CFA501CCDB322004CD5FA /* SearchDataSource.swift in Sources */, + D6E7DAFA22089F3900689BD6 /* MessageBannerViewController.swift in Sources */, A7A052141CD12DD7005AF5E2 /* CommentCell.swift in Sources */, 9D14FF8F1D133351005F4ABB /* ProjectActivityLaunchCell.swift in Sources */, D63BBCF9217F666B007E01F0 /* PaymentMethodsDataSource.swift in Sources */, @@ -6280,9 +6300,9 @@ A7ED20111E83229E00BFFA01 /* ActivitiesDataSourceTests.swift in Sources */, A7ED20441E8323E900BFFA01 /* ResetPasswordViewControllerTests.swift in Sources */, A7ED20491E8323E900BFFA01 /* DiscoveryPageViewControllerTests.swift in Sources */, - D0198F3421793FCF0090A9EC /* SettingsViewControllerTests.swift in Sources */, A7ED20151E83229E00BFFA01 /* DiscoveryFiltersDataSourceTests.swift in Sources */, 77A3C53D219CCF1300824FC1 /* SettingsAccountDataSourceTests.swift in Sources */, + D60CAB922208A1B60083FA40 /* SelectCurrencyViewControllerTests.swift in Sources */, 77E84E0C2166A8C600DA8891 /* MessageBannerViewControllerTests.swift in Sources */, A7ED20581E8323E900BFFA01 /* SignupViewControllerTests.swift in Sources */, D6B6875221923BCF005F5DA7 /* ChangeEmailViewControllerTests.swift in Sources */, @@ -6293,6 +6313,7 @@ A7ED204A1E8323E900BFFA01 /* RewardPledgeViewControllerTests.swift in Sources */, A7ED20401E8323E900BFFA01 /* DiscoveryFiltersViewControllerTests.swift in Sources */, 778215EE20F7AB8300F3D09F /* HelpViewControllerTests.swift in Sources */, + D6E7DAFC22089F9800689BD6 /* SettingsViewControllerTests.swift in Sources */, D6E925CE211107CD00E13010 /* SettingsNewslettersDataSourceTests.swift in Sources */, 77FA6CD220F53E5E00809E31 /* SettingsDataSourceTests.swift in Sources */, A7ED204D1E8323E900BFFA01 /* FindFriendsViewControllerTests.swift in Sources */, diff --git a/Library/UITableView+AutoLayoutHeaderView.swift b/Library/UITableView+AutoLayoutHeaderView.swift new file mode 100644 index 0000000000..fc890baa5f --- /dev/null +++ b/Library/UITableView+AutoLayoutHeaderView.swift @@ -0,0 +1,22 @@ +import UIKit + +extension UITableView { + public func ksr_sizeHeaderFooterViewsToFit() { + let keyPaths: [ReferenceWritableKeyPath] = [ + (\.tableHeaderView), + (\.tableFooterView) + ] + + keyPaths.forEach { keyPath in + if let view = self[keyPath: keyPath] { + let size = view.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) + + if view.frame.height != size.height { + view.frame.size.height = size.height + + self[keyPath: keyPath] = view + } + } + } + } +} diff --git a/Library/UIView+AutoLayout.swift b/Library/UIView+AutoLayout.swift new file mode 100644 index 0000000000..5a48fcea4c --- /dev/null +++ b/Library/UIView+AutoLayout.swift @@ -0,0 +1,18 @@ +import UIKit + +extension UIView { + public func constrainEdges(to view: UIView, priority: UILayoutPriority = .required) { + self.translatesAutoresizingMaskIntoConstraints = false + + let constraints = [ + self.leadingAnchor.constraint(equalTo: view.leadingAnchor), + self.trailingAnchor.constraint(equalTo: view.trailingAnchor), + self.topAnchor.constraint(equalTo: view.topAnchor), + self.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ] + + constraints.forEach { $0.priority = priority } + + NSLayoutConstraint.activate(constraints) + } +} diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_pad@2x.png new file mode 100644 index 0000000000..d999d1a818 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_pad@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4_7inch@2x.png new file mode 100644 index 0000000000..080622cc8e Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4_7inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4inch@2x.png new file mode 100644 index 0000000000..2685e93141 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone4inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_5inch@2x.png new file mode 100644 index 0000000000..00a0bbfb6e Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_5inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_8inch@2x.png new file mode 100644 index 0000000000..b80580f107 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_de_device_phone5_8inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_pad@2x.png new file mode 100644 index 0000000000..e505cb24eb Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_pad@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4_7inch@2x.png new file mode 100644 index 0000000000..a3ab2afd68 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4_7inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4inch@2x.png new file mode 100644 index 0000000000..4f2e677b48 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone4inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_5inch@2x.png new file mode 100644 index 0000000000..35ea8b7547 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_5inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_8inch@2x.png new file mode 100644 index 0000000000..b2326c849a Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_en_device_phone5_8inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_pad@2x.png new file mode 100644 index 0000000000..397c07d398 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_pad@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4_7inch@2x.png new file mode 100644 index 0000000000..40ebc03b17 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4_7inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4inch@2x.png new file mode 100644 index 0000000000..2ae86b32f5 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone4inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_5inch@2x.png new file mode 100644 index 0000000000..32b47bcce4 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_5inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_8inch@2x.png new file mode 100644 index 0000000000..6f14decfa8 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_es_device_phone5_8inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_pad@2x.png new file mode 100644 index 0000000000..4c14477da5 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_pad@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4_7inch@2x.png new file mode 100644 index 0000000000..4a1f91556e Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4_7inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4inch@2x.png new file mode 100644 index 0000000000..5a1112c7ef Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone4inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_5inch@2x.png new file mode 100644 index 0000000000..39ad86db4e Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_5inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_8inch@2x.png new file mode 100644 index 0000000000..aa30ead006 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_fr_device_phone5_8inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_pad@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_pad@2x.png new file mode 100644 index 0000000000..117033bc0f Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_pad@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4_7inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4_7inch@2x.png new file mode 100644 index 0000000000..ad7902fe88 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4_7inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4inch@2x.png new file mode 100644 index 0000000000..ad14a26699 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone4inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_5inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_5inch@2x.png new file mode 100644 index 0000000000..eade5ee67c Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_5inch@2x.png differ diff --git a/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_8inch@2x.png b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_8inch@2x.png new file mode 100644 index 0000000000..737078f045 Binary files /dev/null and b/Screenshots/_64/Kickstarter_Framework_iOSTests.SelectCurrencyViewControllerTests/testView_lang_ja_device_phone5_8inch@2x.png differ