【问题标题】:Swift Popover AnchorSwift Popover 锚点
【发布时间】:2017-06-12 06:20:13
【问题描述】:

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

按钮动作:

@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)

    }
}

这里有几个截图: Main View Popover shown

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

【问题讨论】:

  • 尝试将sourceView 设置为infoIcon

标签: ios swift uikit popover anchorpoint


【解决方案1】:

我会改成这样:

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

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

【讨论】:

  • 工作就像一个魅力!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多