Autocomplete: tweaks to view hierarchy

This commit is contained in:
James Magahern
2020-09-21 18:09:00 -07:00
parent 3086ed7eae
commit 14a28a0776
3 changed files with 31 additions and 5 deletions

View File

@@ -30,6 +30,8 @@ class AutocompleteViewController: UIViewController, UICollectionViewDelegate
} }
public let collectionView: UICollectionView public let collectionView: UICollectionView
private let autocompleteView: AutocompleteView
private let dataSource: UICollectionViewDiffableDataSource<Section, HistoryItem> private let dataSource: UICollectionViewDiffableDataSource<Section, HistoryItem>
init() { init() {
@@ -49,6 +51,8 @@ class AutocompleteViewController: UIViewController, UICollectionViewDelegate
collectionView.dequeueConfiguredReusableCell(using: cellRegistry, for: indexPath, item: item) collectionView.dequeueConfiguredReusableCell(using: cellRegistry, for: indexPath, item: item)
}) })
autocompleteView = AutocompleteView(collectionView: collectionView)
super.init(nibName: nil, bundle: nil) super.init(nibName: nil, bundle: nil)
collectionView.delegate = self collectionView.delegate = self
@@ -58,7 +62,7 @@ class AutocompleteViewController: UIViewController, UICollectionViewDelegate
required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
override func loadView() { override func loadView() {
self.view = collectionView self.view = autocompleteView
} }
// MARK: UICollectionViewDelegate // MARK: UICollectionViewDelegate
@@ -70,4 +74,24 @@ class AutocompleteViewController: UIViewController, UICollectionViewDelegate
delegate?.autocompleteController(self, didSelectHistoryItem: item) delegate?.autocompleteController(self, didSelectHistoryItem: item)
} }
} }
private class AutocompleteView: UIView {
let collectionView: UICollectionView
init(collectionView: UICollectionView) {
self.collectionView = collectionView
super.init(frame: .zero)
addSubview(collectionView)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
collectionView.frame = bounds
}
}
} }

View File

@@ -17,7 +17,7 @@ class BrowserView: UIView
didSet { addSubview(toolbarView!) } didSet { addSubview(toolbarView!) }
} }
var autocompleteView: UICollectionView? { var autocompleteView: UIView? {
didSet { didSet {
addSubview(autocompleteView!) addSubview(autocompleteView!)
if let toolbarView = toolbarView { if let toolbarView = toolbarView {
@@ -118,13 +118,15 @@ class BrowserView: UIView
if let autocompleteView = autocompleteView { if let autocompleteView = autocompleteView {
// Compact: autocomplete view takes the space of the webview // Compact: autocomplete view takes the space of the webview
autocompleteView.frame = bounds.inset(by: webViewContentInset) autocompleteView.frame = bounds.inset(by: webViewContentInset)
if traitCollection.horizontalSizeClass == .regular { if traitCollection.horizontalSizeClass == .regular {
// Regular: shows up just underneath the url bar // Regular: shows up just underneath the url bar
autocompleteView.layer.shadowColor = UIColor.black.cgColor autocompleteView.layer.shadowColor = UIColor.black.cgColor
autocompleteView.layer.shadowOffset = CGSize(width: 0.0, height: 1.0) autocompleteView.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
autocompleteView.layer.shadowRadius = 3.0 autocompleteView.layer.shadowRadius = 8.0
autocompleteView.layer.shadowOpacity = 0.8 autocompleteView.layer.shadowOpacity = 0.6
autocompleteView.layer.cornerRadius = 8.0 autocompleteView.layer.cornerRadius = 8.0
autocompleteView.layer.masksToBounds = true
if let toolbarView = toolbarView, let urlBar = toolbarView.urlBar { if let toolbarView = toolbarView, let urlBar = toolbarView.urlBar {
let urlFrame = self.convert(urlBar.frame, from: urlBar.superview) let urlFrame = self.convert(urlBar.frame, from: urlBar.superview)

View File

@@ -208,7 +208,7 @@ class BrowserViewController: UIViewController, WKNavigationDelegate, WKUIDelegat
browserView.webView = webView browserView.webView = webView
// Autocomplete view // Autocomplete view
browserView.autocompleteView = autocompleteViewController.collectionView browserView.autocompleteView = autocompleteViewController.view
// Load progress // Load progress
updateLoadProgress(forWebView: webView) updateLoadProgress(forWebView: webView)