diff --git a/iphone/Maps/Core/Theme/Renderers/UINavigationBarRenderer.swift b/iphone/Maps/Core/Theme/Renderers/UINavigationBarRenderer.swift index a130495c72..67fb830589 100644 --- a/iphone/Maps/Core/Theme/Renderers/UINavigationBarRenderer.swift +++ b/iphone/Maps/Core/Theme/Renderers/UINavigationBarRenderer.swift @@ -15,10 +15,23 @@ class UINavigationBarRenderer: UIViewRenderer { class func render(_ control: UINavigationBar, style: Style) { super.render(control, style: style) if let barTintColor = style.barTintColor { - control.barTintColor = barTintColor + if #available(iOS 13.0, *) { + let appearance = UINavigationBarAppearance() + appearance.configureWithOpaqueBackground() + appearance.backgroundColor = barTintColor + control.standardAppearance = appearance + control.scrollEdgeAppearance = appearance + } else { + control.barTintColor = barTintColor + } } if let shadowImage = style.shadowImage { - control.shadowImage = shadowImage + if #available(iOS 13.0, *) { + control.standardAppearance.shadowImage = shadowImage + control.scrollEdgeAppearance!.shadowImage = shadowImage + } else { + control.shadowImage = shadowImage + } } var attributes = [NSAttributedString.Key: Any]() @@ -28,6 +41,11 @@ class UINavigationBarRenderer: UIViewRenderer { if let fontColor = style.fontColor { attributes[NSAttributedString.Key.foregroundColor] = fontColor } - control.titleTextAttributes = attributes + if #available(iOS 13.0, *) { + control.standardAppearance.titleTextAttributes = attributes + control.scrollEdgeAppearance!.titleTextAttributes = attributes + } else { + control.titleTextAttributes = attributes + } } } diff --git a/iphone/Maps/UI/Downloader/Cells/MWMMapDownloaderButtonTableViewCell.xib b/iphone/Maps/UI/Downloader/Cells/MWMMapDownloaderButtonTableViewCell.xib index e024ee1ea6..7d1bd401ac 100644 --- a/iphone/Maps/UI/Downloader/Cells/MWMMapDownloaderButtonTableViewCell.xib +++ b/iphone/Maps/UI/Downloader/Cells/MWMMapDownloaderButtonTableViewCell.xib @@ -1,9 +1,10 @@ - + - + + @@ -16,13 +17,11 @@ - - - - - - - @@ -44,4 +37,9 @@ + + + + + diff --git a/iphone/Maps/UI/Downloader/DownloadMapsViewController.swift b/iphone/Maps/UI/Downloader/DownloadMapsViewController.swift index 87efc362bc..e9e172c78b 100644 --- a/iphone/Maps/UI/Downloader/DownloadMapsViewController.swift +++ b/iphone/Maps/UI/Downloader/DownloadMapsViewController.swift @@ -1,3 +1,5 @@ +import UIKit + @objc(MWMDownloadMapsViewController) class DownloadMapsViewController: MWMViewController { // MARK: - Types @@ -20,14 +22,12 @@ class DownloadMapsViewController: MWMViewController { // MARK: - Outlets @IBOutlet var tableView: UITableView! - @IBOutlet var searchBar: UISearchBar! - @IBOutlet var statusBarBackground: UIView! @IBOutlet var noMapsContainer: UIView! - @IBOutlet var searchBarTopOffset: NSLayoutConstraint! @IBOutlet var downloadAllViewContainer: UIView! // MARK: - Properties + private var searchBar: UISearchBar = UISearchBar() var dataSource: IDownloaderDataSource! @objc var mode: MWMMapDownloaderMode = .downloaded private var skipCountryEvent = false @@ -36,7 +36,7 @@ class DownloadMapsViewController: MWMViewController { lazy var noSerchResultViewController: SearchNoResultsViewController = { let vc = storyboard!.instantiateViewController(ofType: SearchNoResultsViewController.self) - view.insertSubview(vc.view, belowSubview: statusBarBackground) + view.insertSubview(vc.view, aboveSubview: tableView) vc.view.alignToSuperview() vc.view.isHidden = true addChild(vc) @@ -77,10 +77,12 @@ class DownloadMapsViewController: MWMViewController { navigationItem.rightBarButtonItem = addMapsButton } noMapsContainer.isHidden = !dataSource.isEmpty || Storage.shared().downloadInProgress() - if !dataSource.isRoot { - searchBarTopOffset.constant = -searchBar.frame.height - } else { + + if dataSource.isRoot { searchBar.placeholder = L("downloader_search_field_hint") + searchBar.delegate = self + // TODO: Fix the height and centering of the searchBar, it's very tricky. + navigationItem.titleView = searchBar } configButtons() } @@ -434,22 +436,6 @@ extension DownloadMapsViewController: StorageObserver { // MARK: - UISearchBarDelegate extension DownloadMapsViewController: UISearchBarDelegate { - func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { - searchBar.setShowsCancelButton(true, animated: true) - navigationController?.setNavigationBarHidden(true, animated: true) - tableView.contentInset = .zero - tableView.scrollIndicatorInsets = .zero - return true - } - - func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { - searchBar.setShowsCancelButton(false, animated: true) - navigationController?.setNavigationBarHidden(false, animated: true) - tableView.contentInset = .zero - tableView.scrollIndicatorInsets = .zero - return true - } - func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { searchBar.text = nil searchBar.resignFirstResponder() diff --git a/iphone/Maps/UI/Downloader/DownloadedMapsDataSource.swift b/iphone/Maps/UI/Downloader/DownloadedMapsDataSource.swift index 2774cf94c9..77d939e116 100644 --- a/iphone/Maps/UI/Downloader/DownloadedMapsDataSource.swift +++ b/iphone/Maps/UI/Downloader/DownloadedMapsDataSource.swift @@ -38,10 +38,10 @@ extension DownloadedMapsDataSource: IDownloaderDataSource { var isEmpty: Bool { return searching ? searchDataSource.isEmpty : countryIds.isEmpty } - + var title: String { guard let parentCountryId = parentCountryId else { - return L("downloader_my_maps_title") + return "" // Root Downloader dialog displays UISearchBar instead of title. } return Storage.shared().name(forCountry: parentCountryId) } diff --git a/iphone/Maps/UI/Storyboard/Main.storyboard b/iphone/Maps/UI/Storyboard/Main.storyboard index 844e2961f0..0d87cad03a 100644 --- a/iphone/Maps/UI/Storyboard/Main.storyboard +++ b/iphone/Maps/UI/Storyboard/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -670,7 +670,7 @@ - + @@ -873,7 +873,7 @@ - + @@ -884,29 +884,8 @@ - - - - - - - - - - - - - - - - - - - - -