From dbb3d779adf5d525491af92ba372e2d0389225d0 Mon Sep 17 00:00:00 2001 From: InKwon James Kim Date: Mon, 24 Jun 2019 13:17:32 +0900 Subject: [PATCH] change ui as dynamic height based on data count --- .../TablePickerViewController.swift | 23 +++++++++++++-- .../TableViewPicker.storyboard | 5 ++-- .../CountryPicker.storyboard | 5 ++-- .../CountryPickerViewController.swift | 25 ++++++++++++++--- .../CurrencyPicker/CurrencyPicker.storyboard | 5 ++-- .../CurrencyPickerViewController.swift | 23 +++++++++++++-- .../ItemPickerView/ItemsPicker.storyboard | 5 ++-- .../ItemsPickerViewController.swift | 23 +++++++++++++-- .../BankBranchPicker.storyboard | 5 ++-- .../BankBranchPickerViewController.swift | 19 +++++++++++-- .../BankPicker/BankPicker.storyboard | 5 ++-- .../BankPicker/BankPickerViewController.swift | 28 +++++++++++++------ 12 files changed, 138 insertions(+), 33 deletions(-) diff --git a/GMERemittance/Library/CountryWithCurrencyPicker/TablePickerViewController.swift b/GMERemittance/Library/CountryWithCurrencyPicker/TablePickerViewController.swift index aade025a..019c048b 100644 --- a/GMERemittance/Library/CountryWithCurrencyPicker/TablePickerViewController.swift +++ b/GMERemittance/Library/CountryWithCurrencyPicker/TablePickerViewController.swift @@ -40,8 +40,24 @@ class TablePickerViewController: UIViewController { @IBOutlet weak var cancelButton: UIButton! @IBOutlet weak var mainview: UIView! + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 - var data: [ExchangeRateModel] = [] + var data: [ExchangeRateModel] = [] { + didSet { + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } + } + } var filteredPlaces: [ExchangeRateModel] = [] { didSet { self.tableVIew.reloadData() @@ -66,11 +82,14 @@ class TablePickerViewController: UIViewController { cancelButton.layer.cornerRadius = 10 self.searchTextField.placeholder = (type?.rawValue ?? "").capitalized - self.configureLanguage() + } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + height.constant = dynamicHeight + self.configureLanguage() + mainview.bottomToOrigin() } diff --git a/GMERemittance/Library/CountryWithCurrencyPicker/TableViewPicker.storyboard b/GMERemittance/Library/CountryWithCurrencyPicker/TableViewPicker.storyboard index 65bdd9d9..f9f9719a 100644 --- a/GMERemittance/Library/CountryWithCurrencyPicker/TableViewPicker.storyboard +++ b/GMERemittance/Library/CountryWithCurrencyPicker/TableViewPicker.storyboard @@ -106,7 +106,7 @@ @@ -198,6 +198,7 @@ + @@ -211,7 +212,6 @@ - @@ -229,6 +229,7 @@ + diff --git a/GMERemittance/Library/CountryWithFlagPicker/CountryPicker.storyboard b/GMERemittance/Library/CountryWithFlagPicker/CountryPicker.storyboard index 6b7259a9..0a3240ac 100644 --- a/GMERemittance/Library/CountryWithFlagPicker/CountryPicker.storyboard +++ b/GMERemittance/Library/CountryWithFlagPicker/CountryPicker.storyboard @@ -105,7 +105,7 @@ @@ -206,6 +206,7 @@ + @@ -222,7 +223,6 @@ - @@ -246,6 +246,7 @@ + diff --git a/GMERemittance/Library/CountryWithFlagPicker/CountryPickerViewController.swift b/GMERemittance/Library/CountryWithFlagPicker/CountryPickerViewController.swift index 7acb6265..75edb86a 100644 --- a/GMERemittance/Library/CountryWithFlagPicker/CountryPickerViewController.swift +++ b/GMERemittance/Library/CountryWithFlagPicker/CountryPickerViewController.swift @@ -46,11 +46,27 @@ class CountryPickerViewController: UIViewController { @IBOutlet weak var cancelButton: UIButton! @IBOutlet weak var searchStackView: UIStackView! @IBOutlet weak var searchStackViewConstraint: NSLayoutConstraint! - + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 + @IBOutlet weak var mainview: UIView! var isLanguageSelection = false - var data: [SendMoneyCountryViewModel] = [] + var data: [SendMoneyCountryViewModel] = [] { + didSet { + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } + } + } var filteredPlaces: [SendMoneyCountryViewModel] = [] { didSet { self.tableVIew.reloadData() @@ -77,7 +93,7 @@ class CountryPickerViewController: UIViewController { self.mainview.layer.cornerRadius = 10 cancelButton.layer.cornerRadius = 10 isLanguageSelection ? (self.searchStackViewConstraint.constant = 0) : (self.searchStackViewConstraint.constant = 45) - configureLanguage() + // setupForAnimation() @@ -87,7 +103,8 @@ class CountryPickerViewController: UIViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // self.animate() - + height.constant = dynamicHeight + configureLanguage() mainview.bottomToOrigin() } diff --git a/GMERemittance/Library/CurrencyPicker/CurrencyPicker.storyboard b/GMERemittance/Library/CurrencyPicker/CurrencyPicker.storyboard index 5bf32e03..88ca1bb2 100644 --- a/GMERemittance/Library/CurrencyPicker/CurrencyPicker.storyboard +++ b/GMERemittance/Library/CurrencyPicker/CurrencyPicker.storyboard @@ -93,7 +93,7 @@ @@ -189,6 +189,7 @@ + @@ -203,7 +204,6 @@ - @@ -218,6 +218,7 @@ + diff --git a/GMERemittance/Library/CurrencyPicker/CurrencyPickerViewController.swift b/GMERemittance/Library/CurrencyPicker/CurrencyPickerViewController.swift index 647ea1a7..642a6a90 100644 --- a/GMERemittance/Library/CurrencyPicker/CurrencyPickerViewController.swift +++ b/GMERemittance/Library/CurrencyPicker/CurrencyPickerViewController.swift @@ -35,7 +35,24 @@ class CurrencyPickerViewController: UIViewController { @IBOutlet weak var cancleButton: UIButton! @IBOutlet weak var titleLabel: UILabel! - var data: [SendMoneyExchangeRateCurrencyViewModel] = [] + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 + + var data: [SendMoneyExchangeRateCurrencyViewModel] = [] { + didSet { + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } + } + } var selectedData: SendMoneyExchangeRateCurrencyViewModel? var filteredPlaces: [SendMoneyExchangeRateCurrencyViewModel] = [] { @@ -63,10 +80,12 @@ class CurrencyPickerViewController: UIViewController { self.setupPlaces() self.mainview.layer.cornerRadius = 10 cancleButton.layer.cornerRadius = 10 - self.configureLanguage() + } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + height.constant = dynamicHeight + self.configureLanguage() mainview.bottomToOrigin() } diff --git a/GMERemittance/Library/ItemPickerView/ItemsPicker.storyboard b/GMERemittance/Library/ItemPickerView/ItemsPicker.storyboard index f930dc65..33b4fca1 100644 --- a/GMERemittance/Library/ItemPickerView/ItemsPicker.storyboard +++ b/GMERemittance/Library/ItemPickerView/ItemsPicker.storyboard @@ -105,7 +105,7 @@ @@ -201,6 +201,7 @@ + @@ -212,7 +213,6 @@ - @@ -227,6 +227,7 @@ + diff --git a/GMERemittance/Library/ItemPickerView/ItemsPickerViewController.swift b/GMERemittance/Library/ItemPickerView/ItemsPickerViewController.swift index ff3aba92..3e69ea81 100644 --- a/GMERemittance/Library/ItemPickerView/ItemsPickerViewController.swift +++ b/GMERemittance/Library/ItemPickerView/ItemsPickerViewController.swift @@ -31,9 +31,24 @@ class ItemsPickerViewController: UIViewController { @IBOutlet weak var mainview: UIView! @IBOutlet weak var cancelButton: UIButton! + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 - - var data: [String] = [] + var data: [String] = [] { + didSet { + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } + } + } var filteredPlaces: [String] = [] { didSet { @@ -60,11 +75,13 @@ class ItemsPickerViewController: UIViewController { self.setupPlaces() self.mainview.layer.cornerRadius = 10 cancelButton.layer.cornerRadius = 10 - self.configureLanguage() + } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + height.constant = dynamicHeight + self.configureLanguage() mainview.bottomToOrigin() } diff --git a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard index 871cf5e3..b8f349da 100644 --- a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard +++ b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard @@ -97,7 +97,7 @@ @@ -204,6 +204,7 @@ + @@ -220,7 +221,6 @@ - @@ -238,6 +238,7 @@ + diff --git a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift index 14cd3a3a..ec4cc60c 100644 --- a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift +++ b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift @@ -34,10 +34,24 @@ class BankBranchPickerViewController: UIViewController { @IBOutlet weak var mainview: UIView! @IBOutlet weak var infoLabel: UILabel! @IBOutlet weak var cancelButton: UIButton! - + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 + + var data: [SendMoneyBankBranch] = [] { didSet { self.tableVIew.reloadData() + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } } } var countryCode: String? @@ -71,13 +85,14 @@ class BankBranchPickerViewController: UIViewController { self.mainview.layer.cornerRadius = 10 cancelButton.layer.cornerRadius = 10 - setTitle() self.showProgressHud() self.fetchBranch(searchString: "") } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + setTitle() + height.constant = dynamicHeight mainview.bottomToOrigin() } private func setNoResultText() { diff --git a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard index da4a0fb3..acdf686e 100644 --- a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard +++ b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard @@ -94,7 +94,7 @@ @@ -183,6 +183,7 @@ + @@ -202,7 +203,6 @@ - @@ -223,6 +223,7 @@ + diff --git a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift index af3baa2e..b27f84d4 100644 --- a/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift +++ b/GMERemittance/Module/SendMoneyModules/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift @@ -30,10 +30,26 @@ class BankPickerViewController: UIViewController { @IBOutlet weak var cancelButton: UIButton! @IBOutlet weak var mainview: UIView! + @IBOutlet weak var height: NSLayoutConstraint! + private var dynamicHeight: CGFloat = 0 - - var data: [SendMoneyBank] = [] + var data: [SendMoneyBank] = [] { + didSet { + dynamicHeight = CGFloat(153 + 44 * (data.count + 1)) + + if dynamicHeight < view.frame.height * 0.5 { + dynamicHeight = view.frame.height * 0.5 + } else if dynamicHeight > view.frame.height * 0.8 { + dynamicHeight = view.frame.height * 0.8 + } + + if height != nil { + height.constant = dynamicHeight + } + } + } + var selectedData: SendMoneyBank? var filteredPlaces: [SendMoneyBank] = [] { @@ -57,19 +73,15 @@ class BankPickerViewController: UIViewController { self.setupTableView() self.setupSearchService() - // self.setupSearchTextFieldUi() self.setupPlaces() -// self.titleView.layer.cornerRadius = 10 self.mainview.layer.cornerRadius = 10 cancelButton.layer.cornerRadius = 10 - - setTitle() - - } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + setTitle() + height.constant = dynamicHeight mainview.bottomToOrigin() }