0

我试图在图像上显示一个弹出框,但未能将锚点指向我的图像边框(图像是信息图标)。这是我的代码:

按钮动作:

@IBAction func infoTapped(_ sender: AnyObject) {
        self.performSegue(withIdentifier: "InfoPopOver", sender: nil)
    }

以及为segue做准备:

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)

    }
}

这里有几个屏幕截图: Main View Popover 显示

我得到的最好的结果是手动设置坐标,但它并不适合每种屏幕类型......

4

1 回答 1

1

我会把它改成这样:

vctr.popoverPresentationController?.sourceView = infoIcon.superview
vctr.popoverPresentationController?.sourceRect = infoIcon.frame

这样您就可以确定您正在使用 infoIcon 的超级视图,并且框架将位于正确的位置。

于 2017-06-12T07:53:06.360 回答