为什么 UIDimmingView 总是覆盖屏幕主要边界?

Why does UIDimmingView always cover screen main bounds?

我正在尝试制作包含 table 视图控制器和 table 视图 header 内的搜索控制器的底部滑块菜单。此时,我将 table 视图控制器添加为 child 视图控制器。搜索栏聚焦后调暗视图触发但它覆盖屏幕主要边界。我期望调光视图保持在 child 视图控制器边界内。我不明白调暗视图总是添加屏幕主边界的原因?我有一个屏幕截图来演示我遇到的问题。

感谢您的帮助。

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
    }

}

Screen shot

即使它的内容出现在子视图控制器上下文中,搜索控制器本身也是一个呈现的视图控制器并阻止与任何其他界面的交互。因此,如果您要求调光视图,调光视图会覆盖搜索控制器界面以外的所有内容,这是有道理的。如果您不喜欢,请将 obscuresBackgroundDuringPresentation 设置为 false

(您不应使用 dimsBackgroundDuringPresentation。请改用 obscuresBackgroundDuringPresentation。)