如何准确地在 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)
然而,您真正应该做的是设置 blurView
和 pickerView
,然后使用约束确定它们的位置。
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)
然而,您真正应该做的是设置 blurView
和 pickerView
,然后使用约束确定它们的位置。