我正在尝试制作底部 slider 菜单,其中包含 TableView Controller 和 TableView 标题内的搜索 Controller 。此时,我添加了 TableView Controller 作为 subview Controller 。搜索栏聚焦后, View 触发器变暗,但它覆盖了屏幕主边界。我期望调光 View 保持在 subview Controller 边界内。我无法理解为什么调光 View 总是添加屏幕主边界的原因?我有一个屏幕截图来演示我遇到的问题。
感谢您的帮助。
class ChildTableViewController: UITableViewController {
lazy var searchController: UISearchController = {
let temp = UISearchController(searchResultsController: resultSearchController)
temp.dimsBackgroundDuringPresentation = true
return temp
}()
private var resultSearchController = ResultSearchTableViewController(style: .plain)
override func viewDidLoad() {
super.viewDidLoad()
prepareViewController()
}
func prepareViewController() {
self.tableView = UITableView(frame: .zero, style: .plain)
self.tableView.separatorStyle = .singleLine
self.tableView.register(ChildTableViewCell.self, forCellReuseIdentifier: ChildTableViewCell.identifier)
self.tableView.tableHeaderView = searchController.searchBar
self.definesPresentationContext = true
}
}
最佳答案
即使其内容出现在 subview Controller 上下文上,搜索 Controller 本身也是一个呈现的 View Controller ,并阻止与任何其他界面交互。因此,如果您要求调暗 View ,调暗 View 将涵盖除搜索 Controller 界面之外的所有内容,这是有道理的。如果您不喜欢这样,请将 obscuresBackgroundDuringPresentation
设置为 false
。
(您不应使用 dimsBackgroundDuringPresentation
。请使用 obscuresBackgroundDuringPresentation
。)
关于ios - 为什么 UDimmingView 总是覆盖屏幕主边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689765/