在屏幕上居中 Swift 弹出窗口

Posted

技术标签:

【中文标题】在屏幕上居中 Swift 弹出窗口【英文标题】:Center Swift Pop-Over on screen 【发布时间】:2016-07-01 13:41:16 【问题描述】:

我目前正在开发一个应用程序,该应用程序要求用户配置文件在按下用户图片时显示为弹出窗口。我设法使用 UIPopoverPresentationControllerDelegate 获得了这种行为,但我希望你能帮助我在屏幕中间输入这个弹出窗口。

我的代码如下:

    func presentProfile(sender: UIButton)

            let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("profileVC") as! ProfileViewController

            vc.profilePicture =  (self.contentIdToImage[content.hostId as! String]?.image)!

            vc.modalPresentationStyle = UIModalPresentationStyle.Popover

            let height = self.view.bounds.size.height
            let width = self.view.bounds.size.width

            vc.preferredContentSize = CGSizeMake(width * 0.8, height * 0.8)

            if let presentationController = vc.popoverPresentationController 
                presentationController.delegate = self
                presentationController.permittedArrowDirections =  UIPopoverArrowDirection(rawValue: 0)
                presentationController.sourceView = sender

                self.presentViewController(vc, animated: true, completion: nil)
            

    

谢谢

编辑:

根据我收到的第一个答案,我开始使用 CGRect,我认为可以使用 UIPopoverPresentationController 的“sourceRect”属性来实现所需的行为,但我还没有弄清楚。

【问题讨论】:

我在这里找到了我的问题的解决方案:***.com/a/31854391/1270603 【参考方案1】:

设置宽度和高度后设置frame

  let height = self.view.bounds.size.height
  let width = self.view.bounds.size.width
  vc.preferredContentSize = CGSizeMake(width * 0.8, height * 0.8)
  vc.frame = CGRect(x: CGRectGetMidX(width - vc.bounds.width / 2), y: CGRectGetMidY(height - vc.bounds.height/2), width: width * 0.8,  height: height * 0.8)

【讨论】:

抱歉回复晚了,我试过了,但没有用。我在这篇文章中找到:***.com/a/31854391/1270603

以上是关于在屏幕上居中 Swift 弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

c#的 winform怎么使弹出的窗口在屏幕的正中间,就是当我点击链接弹出的窗口。 急~在线等!!!!!!

无法居中弹出框 Swift

CSS垂直和水平居中的Div [重复]

点击弹出居中带有透明遮罩层窗口:

是啥决定了帐户控制弹出窗口将出现在哪个屏幕上?

WPF 窗口居中 & 变更触发机制