66 lines
2.3 KiB
Swift
66 lines
2.3 KiB
Swift
// Copyright 2018-Present Shin Yamamoto. All rights reserved. MIT license.
|
|
|
|
import UIKit
|
|
import FloatingPanel
|
|
import WebKit
|
|
|
|
final class MultiPanelController: FloatingPanelController, FloatingPanelControllerDelegate {
|
|
|
|
private final class FirstPanelContentViewController: UIViewController {
|
|
|
|
lazy var webView: WKWebView = WKWebView()
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
view.addSubview(webView)
|
|
webView.frame = view.bounds
|
|
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
|
webView.load(URLRequest(url: URL(string: "https://www.apple.com")!))
|
|
|
|
let vc = MultiSecondPanelController()
|
|
vc.setUpContent()
|
|
vc.addPanel(toParent: self)
|
|
}
|
|
}
|
|
|
|
private final class MultiSecondPanelController: FloatingPanelController {
|
|
|
|
private final class SecondPanelContentViewController: DebugTableViewController {}
|
|
|
|
func setUpContent() {
|
|
contentInsetAdjustmentBehavior = .never
|
|
let vc = SecondPanelContentViewController()
|
|
vc.loadViewIfNeeded()
|
|
vc.title = "Second Panel"
|
|
vc.buttonStackView.isHidden = true
|
|
let navigationController = UINavigationController(rootViewController: vc)
|
|
navigationController.navigationBar.barTintColor = .white
|
|
navigationController.navigationBar.titleTextAttributes = [
|
|
.foregroundColor: UIColor.black
|
|
]
|
|
set(contentViewController: navigationController)
|
|
self.track(scrollView: vc.tableView)
|
|
surfaceView.containerMargins = .init(top: 24.0, left: 0.0, bottom: layoutInsets.bottom, right: 0.0)
|
|
}
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
layout = FirstViewLayout()
|
|
isRemovalInteractionEnabled = true
|
|
|
|
let vc = FirstPanelContentViewController()
|
|
set(contentViewController: vc)
|
|
track(scrollView: vc.webView.scrollView)
|
|
}
|
|
|
|
private final class FirstViewLayout: FloatingPanelLayout {
|
|
let position: FloatingPanelPosition = .bottom
|
|
let initialState: FloatingPanelState = .full
|
|
let anchors: [FloatingPanelState : FloatingPanelLayoutAnchoring] = [
|
|
.full: FloatingPanelLayoutAnchor(absoluteInset: 40.0, edge: .top, referenceGuide: .superview)
|
|
]
|
|
}
|
|
}
|
|
|