中心Swift Pop-Over在屏幕上

时间:2016-07-01 13:41:16

标签: ios swift user-interface uipopovercontroller

我目前正在开发一款应用程序,该应用程序需要在按下用户图片时将用户配置文件显示为弹出窗口。我设法使用UIPopoverPresentationControllerDelegate获得此行为,但我希望您的帮助在屏幕中间输入此弹出窗口。

current and desired behaviour

我的代码如下:

    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,我认为可以使用" sourceRect"来实现所期望的行为。 UIPopoverPresentationController的属性,但我还没搞清楚。

1 个答案:

答案 0 :(得分: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)