如何准确地在 table 视图控制器中当前显示的内容的中心显示弹出视图?

How to show a pop up view exactly in the center of what is currently being displayed in a table view conntroller?

我的应用程序有一个设置VC,它包含一个 TableView,详细说明了我的应用程序的所有可用选项。我想在用户点击这些选项之一时显示一个弹出视图,以避免将用户带到另一个 VC。我目前已经在应用程序的其他部分实现了弹出视图,但是当尝试从设置 VC 中显示它时出现问题,似乎边界是针对 tableView 的整个大小而不是当前的大小在屏幕上,所以如果我向下滚动,弹出窗口会一直向上显示...任何想法。这是我的弹出视图设置方法。 animateIn()方法是呈现弹出视图和模糊视图。

func setUpPickerView(){
        blurView.bounds = self.view.bounds
        pickerView.bounds = CGRect(x: 0, y: 0, width: self.view.bounds.width * 0.75, height: self.view.bounds.height * 0.45)
        pickerView.layer.cornerRadius = 15.0
        pickerView.layer.cornerRadius = 15.0
        animateIn(desiredView: blurView)
        animateIn(desiredView: pickerView)
        tableView.isUserInteractionEnabled = false
        blurView.alpha = 0.6
    }

视图的bounds是视图内部的坐标系。视图的 frame 定义视图在其父坐标系中的显示位置。您的代码只看到 bounds 因此框架可能默认位于屏幕顶部。我怀疑你想要这样的东西:

blurView.frame = self.view.bounds
pickerView.frame = CGRect(
    x: (blurView.bounds.size.height - self.view.bounds.width * 0.75) / 2
    y: (blurView.bounds.size.width - self.view.bounds.height * 0.45) / 2
    width: self.view.bounds.width * 0.75
    height: self.view.bounds.height * 0.45)

然而,您真正应该做的是设置 blurViewpickerView,然后使用约束确定它们的位置。