【发布时间】:2019-03-12 07:46:43
【问题描述】:
我有一个 UIView 子类,它应该“浮动”在放置整个屏幕的 TableView 上方。 UIView 子视图在与 TableView 相同的 ViewController 中设置时正常显示。我试图让这个元素可重用,所以我把它移到了单独的 UIView 类中。现在 UIView 显示在 TableView 下方。实现bringSubviewToFront() 或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
}
视图控制器
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")
}
我错过了什么?
【问题讨论】:
-
您的
someUIView是添加tableView的视图。那么,你怎么能期望它在层次结构中位于tableView之上呢?它们不是某些视图的子视图。tableView是SomeUIView中的子视图。 -
如何使 someUIView 成为主 viewcontroller 视图的子视图?
标签: ios swift uitableview uiview