У меня есть подкласс UIView, который должен быть «плавающим» над TableView, который размещает весь экран.Подвид UIView отображался так, как и должно быть, когда он был установлен в том же ViewController, что и TableView.Я попытался сделать этот элемент многоразовым, поэтому переместил его в отдельный класс UIView.Теперь UIView отображается под TableView.Реализация метода takeSubviewToFront () или sendSubviewToBack () не работает и ничего не меняется.
Вот упрощенный код:
Класс UIView
class SomeUIView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(someUIView)
setupSomeUIView() //autolayout.etc
}
let someUIView: UIView = {
//here goes customisation
return UIView
}
func setupSomeUIView(){
someUIView.translatesAutoresizingMaskIntoConstraints = false
someUIView.leftAnchor.constraint(equalTo: self.safeAreaLayoutGuide.leftAnchor, constant: 7).isActive = true
someUIView.topAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
someUIView.rightAnchor.constraint(equalTo: self.safeAreaLayoutGuide.rightAnchor, constant: -7).isActive = true
someUIView.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor, constant: 63).isActive = true
}
ViewController
class ViewController: UIViewController {
someTableView = UITableView()
someUIView: SomeUIView { return self.view as! SomeUIView}
ovveride func viewDidLoad() {
super.viewDidLoad()
self.view = SomeUIView(frame: UIScreen.main.bounds)
setupTableView()
}
func setupTableView() {
view.addSubview(searchResultsTableView)
someTableView.contentInset = UIEdgeInsets(top: 70, left: 0, bottom: 0, right: 0)
someTableView.translatesAutoresizingMaskIntoConstraints = false
someTableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40).isActive = true
someTableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
someTableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
someTableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
someTableView.register(SomeCell.self, forCellReuseIdentifier: "cell")
}
Чтоя скучаю?