Если вы хотите достичь этого, не используя какую-либо третью библиотеку, этого можно достичь с помощью этого подхода.
- Добавить представление контейнера в MainViewController.
Добавить сторонуTableViewController для представления контейнера, используя segue
Установите ширину представления Container по мере необходимости.
Добавьте ограничения к представлению контейнера, ведущие, верхние, нижние ипостоянная ширина.
Создание выходного значения конечного ограничения в представлении и переключение его константы из значения MainViewController за вычетом значения ширины и отображения 0.
** MainViewController **
import UIKit
class MainViewController: UIViewController {
@IBOutlet var leadingConstraint: NSLayoutConstraint!
@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func openView(_ sender: Any) {
if leadingConstraint.constant == -250{
leadingConstraint.constant = 0
}
else{
leadingConstraint.constant = -250
}
UIView.animate(withDuration: 0.4) {
self.view.layoutIfNeeded()
}
}
}
SlideTableViewController
import UIKit
class SlideTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var dataItems: [String] = ["item1", "item2", "item3", "item4"]
@IBOutlet weak var tabelView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tabelView.delegate = self
tabelView.dataSource = self
}
// MARK: - Table view data source
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = dataItems[indexPath.row]
return cell
}
}
![enter image description here](https://i.stack.imgur.com/2nHBb.gif)
Результат