gpt4 book ai didi

swift - 如何在 TableView 上居中弹出窗口?

转载 作者:搜寻专家 更新时间:2023-11-01 07:10:57 30 4
gpt4 key购买 nike

我正在制作一个在每个单元格中都有一个按钮的表格 View ,当您按下按钮时会显示一个弹出窗口,但问题是使弹出窗口在表格 View 上居中,但是如果您向下移动表格 View ,然后按下按钮弹出窗口使用选择按钮作为指导,因此弹出窗口会上升。在接下来的图片中,您可以看到我试图解释的内容。

enter image description here

从单元格中按下按钮时使用的代码:

func buttonPressed(sender: UIButton){

let buttonTag = sender.tag

let width = self.view.frame.midX + (self.view.frame.midX/2)

let height = info[buttonTag].nota.calculateHeight(width: width, sizeFont: 16.0) + 40

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let vc = storyboard.instantiateViewController(withIdentifier: "NotaTable") as! Popever

vc.modalPresentationStyle = UIModalPresentationStyle.popover
vc.popoverPresentationController?.delegate = self
vc.preferredContentSize = CGSize(width: width, height: height + 115)
vc.width = width

let popover: UIPopoverPresentationController = vc.popoverPresentationController!
popover.delegate = self
popover.sourceView = self.view

popover.sourceRect = CGRect(x: self.view.frame.midX - (width/2), y: self.view.frame.midY - (height/2), width: width, height: height)

popover.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)

present(vc, animated: true, completion:nil)

}

那么,无论按下什么按钮,如何使弹出窗口聚焦在中心?

提前致谢!

最佳答案

我找到了解决这个问题的方法,改为更改 popover.sourceRect 用 self.view.frame 替换 self.view.bounds 完成 de x 和 y 位置

let popover: UIPopoverPresentationController = vc.popoverPresentationController!
popover.delegate = self
popover.sourceView = self.view

popover.sourceRect = CGRect(x: (self.view.bounds.midX - (width/2)), y: (self.view.bounds.midY - (height/2)), width: width, height: height)

这里我留给你 frame 和 bounds 的区别:

UIView 的边界是矩形,表示为相对于其自身坐标系 (0,0) 的位置 (x,y) 和大小 (width,height)。

UIView 的框架是一个矩形,表示为相对于它包含在其中的父 View 的位置 (x,y) 和大小(宽度,高度)。

I got it from here

关于swift - 如何在 TableView 上居中弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960872/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com