Ios 快速爆裂锚
我试图在图像上显示一个弹出框,但尝试将锚点指向图像边框失败(图像是信息图标)。 这是我的密码: 按钮操作:Ios 快速爆裂锚,ios,swift,uikit,popover,anchorpoint,Ios,Swift,Uikit,Popover,Anchorpoint,我试图在图像上显示一个弹出框,但尝试将锚点指向图像边框失败(图像是信息图标)。 这是我的密码: 按钮操作: @IBAction func infoTapped(_ sender: AnyObject) { self.performSegue(withIdentifier: "InfoPopOver", sender: nil) } extension AddExpenseViewController: UIPopoverPresentationControllerDel
@IBAction func infoTapped(_ sender: AnyObject) {
self.performSegue(withIdentifier: "InfoPopOver", sender: nil)
}
extension AddExpenseViewController: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "InfoPopOver" {
if let vctr = segue.destination as? MyPopOverViewController {
vctr.modalPresentationStyle = .popover
vctr.popoverPresentationController?.delegate = self
vctr.popoverPresentationController?.sourceView = self.view
vctr.popoverPresentationController?.sourceRect = infoIcon.frame
}
}
}
}
class MyPopOverViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.preferredContentSize = CGSize(width: 185, height: 80)
}
}
和准备阶段:
@IBAction func infoTapped(_ sender: AnyObject) {
self.performSegue(withIdentifier: "InfoPopOver", sender: nil)
}
extension AddExpenseViewController: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "InfoPopOver" {
if let vctr = segue.destination as? MyPopOverViewController {
vctr.modalPresentationStyle = .popover
vctr.popoverPresentationController?.delegate = self
vctr.popoverPresentationController?.sourceView = self.view
vctr.popoverPresentationController?.sourceRect = infoIcon.frame
}
}
}
}
class MyPopOverViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.preferredContentSize = CGSize(width: 185, height: 80)
}
}
下面是几个屏幕截图:
我得到的最好结果是手动设置坐标,但它不适合每种屏幕类型…我将其更改为:
vctr.popoverPresentationController?.sourceView = infoIcon.superview
vctr.popoverPresentationController?.sourceRect = infoIcon.frame
通过这种方式,您可以确保您使用的是信息图标的superview,并且框架将位于正确的位置。尝试将
sourceView
设置为infoIcon
?效果非常好!谢谢!