From 8176f0d9cc1105e881943ab8143b266fd56ff15a Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 29 Jan 2022 08:10:50 +0800 Subject: [PATCH 1/5] fixes feed nav bar --- iOS/Base.lproj/Main.storyboard | 4 ++-- iOS/MasterFeed/MasterFeedViewController.swift | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 4e39e3769..7ce18a37f 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -158,7 +158,7 @@ - + @@ -172,7 +172,7 @@ - + diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 3b8faf264..158b33b68 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -76,6 +76,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner, Ma refreshControl!.addTarget(self, action: #selector(refreshAccounts(_:)), for: .valueChanged) configureToolbar() + configureNavbar() becomeFirstResponder() } @@ -715,6 +716,22 @@ private extension MasterFeedViewController { toolbarItems?.insert(refreshProgressItemButton, at: 2) } + func configureNavbar() { + let scrollEdge = UINavigationBarAppearance() + scrollEdge.configureWithOpaqueBackground() + scrollEdge.shadowColor = nil + scrollEdge.shadowImage = UIImage() + + let standard = UINavigationBarAppearance() + standard.shadowColor = nil + standard.shadowImage = UIImage() + + navigationController?.navigationBar.standardAppearance = standard + navigationController?.navigationBar.compactAppearance = standard + navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge + navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge + } + func setFilterButtonToActive() { filterButton?.image = AppAssets.filterActiveImage filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Feeds", comment: "Selected - Filter Read Feeds") From 59dacc1b59a4fc7e3c7a3e65d2834541adb02555 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 29 Jan 2022 09:33:49 +0800 Subject: [PATCH 2/5] Navigation/Toolbar Appearance Consistent behaviour for Feed and Timeline toolbars. --- iOS/MasterFeed/MasterFeedViewController.swift | 2 +- .../MasterTimelineViewController.swift | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 158b33b68..60338f2de 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -723,7 +723,7 @@ private extension MasterFeedViewController { scrollEdge.shadowImage = UIImage() let standard = UINavigationBarAppearance() - standard.shadowColor = nil + standard.shadowColor = .opaqueSeparator standard.shadowImage = UIImage() navigationController?.navigationBar.standardAppearance = standard diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index ee682813c..6743e04e2 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -93,6 +93,7 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner refreshControl!.addTarget(self, action: #selector(refreshAccounts(_:)), for: .valueChanged) configureToolbar() + configureNavbar() resetUI(resetScroll: true) // Load the table and then scroll to the saved position if available @@ -621,6 +622,22 @@ private extension MasterTimelineViewController { let refreshProgressItemButton = UIBarButtonItem(customView: refreshProgressView) toolbarItems?.insert(refreshProgressItemButton, at: 2) } + + func configureNavbar() { + let scrollEdge = UINavigationBarAppearance() + scrollEdge.configureWithOpaqueBackground() + scrollEdge.shadowColor = nil + scrollEdge.shadowImage = UIImage() + + let standard = UINavigationBarAppearance() + standard.shadowColor = .opaqueSeparator + standard.shadowImage = UIImage() + + navigationController?.navigationBar.standardAppearance = standard + navigationController?.navigationBar.compactAppearance = standard + navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge + navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge + } func resetUI(resetScroll: Bool) { From f71a1771996932c11f407e742d5a1109f1616162 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 29 Jan 2022 09:35:40 +0800 Subject: [PATCH 3/5] remove storyboard change --- iOS/Base.lproj/Main.storyboard | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 7ce18a37f..21e00f0a0 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -158,7 +158,7 @@ - + From 7249451c9944d0b11f48decf3c6a2fbb3f64b355 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 29 Jan 2022 13:52:57 +0800 Subject: [PATCH 4/5] Fixes Article nav/tool bar behaviour Now consistent with Feed and Timeline --- iOS/Article/ArticleViewController.swift | 22 ++++++++++++++++++++++ iOS/Article/WebViewController.swift | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/iOS/Article/ArticleViewController.swift b/iOS/Article/ArticleViewController.swift index 6009f6ff1..100e12e40 100644 --- a/iOS/Article/ArticleViewController.swift +++ b/iOS/Article/ArticleViewController.swift @@ -101,6 +101,7 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable { ]) fullScreenTapZone.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(didTapNavigationBar))) navigationItem.titleView = fullScreenTapZone + configureNavbar() articleExtractorButton.addTarget(self, action: #selector(toggleArticleExtractor(_:)), for: .touchUpInside) toolbarItems?.insert(UIBarButtonItem(customView: articleExtractorButton), at: 6) @@ -229,6 +230,27 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable { } + override func contentScrollView(for edge: NSDirectionalRectEdge) -> UIScrollView? { + return currentWebViewController?.webView?.scrollView + } + + func configureNavbar() { + let scrollEdge = UINavigationBarAppearance() + scrollEdge.configureWithOpaqueBackground() + scrollEdge.shadowColor = nil + scrollEdge.shadowImage = UIImage() + + let standard = UINavigationBarAppearance() + standard.shadowColor = .opaqueSeparator + standard.shadowImage = UIImage() + + navigationController?.navigationBar.standardAppearance = standard + navigationController?.navigationBar.compactAppearance = standard + navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge + navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge + } + + // MARK: Notifications @objc dynamic func unreadCountDidChange(_ notification: Notification) { diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift index 38b83c1b2..d5c04f8d8 100644 --- a/iOS/Article/WebViewController.swift +++ b/iOS/Article/WebViewController.swift @@ -31,7 +31,7 @@ class WebViewController: UIViewController { private var topShowBarsViewConstraint: NSLayoutConstraint! private var bottomShowBarsViewConstraint: NSLayoutConstraint! - private var webView: PreloadedWebView? { + var webView: PreloadedWebView? { return view.subviews[0] as? PreloadedWebView } From 90b41995ebaa009bd8be5fc565248f2d8a3d9b10 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 5 Feb 2022 10:47:26 +0800 Subject: [PATCH 5/5] moves nav bar config to SceneCoordinator --- iOS/Article/ArticleViewController.swift | 17 ---------------- iOS/MasterFeed/MasterFeedViewController.swift | 17 ---------------- .../MasterTimelineViewController.swift | 18 +---------------- iOS/SceneCoordinator.swift | 20 ++++++++++++------- 4 files changed, 14 insertions(+), 58 deletions(-) diff --git a/iOS/Article/ArticleViewController.swift b/iOS/Article/ArticleViewController.swift index 100e12e40..9ae9c52b7 100644 --- a/iOS/Article/ArticleViewController.swift +++ b/iOS/Article/ArticleViewController.swift @@ -101,7 +101,6 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable { ]) fullScreenTapZone.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(didTapNavigationBar))) navigationItem.titleView = fullScreenTapZone - configureNavbar() articleExtractorButton.addTarget(self, action: #selector(toggleArticleExtractor(_:)), for: .touchUpInside) toolbarItems?.insert(UIBarButtonItem(customView: articleExtractorButton), at: 6) @@ -234,22 +233,6 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable { return currentWebViewController?.webView?.scrollView } - func configureNavbar() { - let scrollEdge = UINavigationBarAppearance() - scrollEdge.configureWithOpaqueBackground() - scrollEdge.shadowColor = nil - scrollEdge.shadowImage = UIImage() - - let standard = UINavigationBarAppearance() - standard.shadowColor = .opaqueSeparator - standard.shadowImage = UIImage() - - navigationController?.navigationBar.standardAppearance = standard - navigationController?.navigationBar.compactAppearance = standard - navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge - navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge - } - // MARK: Notifications diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 60338f2de..3b8faf264 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -76,7 +76,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner, Ma refreshControl!.addTarget(self, action: #selector(refreshAccounts(_:)), for: .valueChanged) configureToolbar() - configureNavbar() becomeFirstResponder() } @@ -716,22 +715,6 @@ private extension MasterFeedViewController { toolbarItems?.insert(refreshProgressItemButton, at: 2) } - func configureNavbar() { - let scrollEdge = UINavigationBarAppearance() - scrollEdge.configureWithOpaqueBackground() - scrollEdge.shadowColor = nil - scrollEdge.shadowImage = UIImage() - - let standard = UINavigationBarAppearance() - standard.shadowColor = .opaqueSeparator - standard.shadowImage = UIImage() - - navigationController?.navigationBar.standardAppearance = standard - navigationController?.navigationBar.compactAppearance = standard - navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge - navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge - } - func setFilterButtonToActive() { filterButton?.image = AppAssets.filterActiveImage filterButton?.accLabelText = NSLocalizedString("Selected - Filter Read Feeds", comment: "Selected - Filter Read Feeds") diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 78e720341..ae0a14d4b 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -93,9 +93,7 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner refreshControl = UIRefreshControl() refreshControl!.addTarget(self, action: #selector(refreshAccounts(_:)), for: .valueChanged) - configureToolbar() - configureNavbar() refreshProgressView = Bundle.main.loadNibNamed("RefreshProgressView", owner: self, options: nil)?[0] as? RefreshProgressView refreshProgressItemButton = UIBarButtonItem(customView: refreshProgressView!) @@ -631,21 +629,7 @@ private extension MasterTimelineViewController { toolbarItems?.insert(refreshProgressItemButton, at: 2) } - func configureNavbar() { - let scrollEdge = UINavigationBarAppearance() - scrollEdge.configureWithOpaqueBackground() - scrollEdge.shadowColor = nil - scrollEdge.shadowImage = UIImage() - - let standard = UINavigationBarAppearance() - standard.shadowColor = .opaqueSeparator - standard.shadowImage = UIImage() - - navigationController?.navigationBar.standardAppearance = standard - navigationController?.navigationBar.compactAppearance = standard - navigationController?.navigationBar.scrollEdgeAppearance = scrollEdge - navigationController?.navigationBar.compactScrollEdgeAppearance = scrollEdge - } + func resetUI(resetScroll: Bool) { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 1b20e86d4..173b7f16d 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1365,14 +1365,20 @@ extension SceneCoordinator: UINavigationControllerDelegate { private extension SceneCoordinator { func configureNavigationController(_ navController: UINavigationController) { - let navigationStandardAppearance = UINavigationBarAppearance() - navigationStandardAppearance.titleTextAttributes = [.foregroundColor: UIColor.label] - navigationStandardAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.label] - navController.navigationBar.standardAppearance = navigationStandardAppearance - let scrollEdgeStandardAppearance = UINavigationBarAppearance() - scrollEdgeStandardAppearance.backgroundColor = .systemBackground - navController.navigationBar.scrollEdgeAppearance = scrollEdgeStandardAppearance + let scrollEdge = UINavigationBarAppearance() + scrollEdge.configureWithOpaqueBackground() + scrollEdge.shadowColor = nil + scrollEdge.shadowImage = UIImage() + + let standard = UINavigationBarAppearance() + standard.shadowColor = .opaqueSeparator + standard.shadowImage = UIImage() + + navController.navigationBar.standardAppearance = standard + navController.navigationBar.compactAppearance = standard + navController.navigationBar.scrollEdgeAppearance = scrollEdge + navController.navigationBar.compactScrollEdgeAppearance = scrollEdge navController.navigationBar.tintColor = AppAssets.primaryAccentColor