ios - PopoverPresentation Controller 未以左上箭头方向显示在屏幕中央

标签 ios iphone swift uipopovercontroller

enter image description here

我想在屏幕中央显示弹出窗口。下图显示它正在移动左侧的位。

我尝试了下面的代码来显示弹出窗口 Controller 。

func displayPopoverVC() {

    let popOver = popupArtistStoryboard.instantiateViewController(withIdentifier: "MeasurementPopupVC") as! MeasurementPopupVC
    popOver.modalPresentationStyle = .popover
    popOver.popoverPresentationController?.permittedArrowDirections = .up

    popOver.popoverPresentationController?.sourceView = btnTmpMeasurement
    popOver.popoverPresentationController?.sourceRect = CGRect.init(x: 0, y: 0, width: btnTmpMeasurement.frame.size.width, height: btnTmpMeasurement.frame.size.height)

    if (DeviceType.IS_IPAD_PRO || DeviceType.IS_IPAD) {
        popOver.preferredContentSize = CGSize(width: 240, height: 50.0)
    } else {
        popOver.preferredContentSize = CGSize(width: 325, height: 30.0)
    }

    popOver.delegate = self
    popOver.popoverPresentationController?.delegate = self

    popOver.arrOfMeasurementData = [String]()

    if let presentation = popOver.popoverPresentationController {
        presentation.backgroundColor = UIColor(red: 236.0/255.0, green: 236.0/255.0, blue: 236.0/255.0, alpha: 0.5)
    }

    self.present(popOver, animated: true) {}
}

如果我写了任何错误的代码,请纠正我。

最佳答案

用户使用以下代码将弹出窗口设置在屏幕中央。

popOver.popoverPresentationController?.sourceRect = CGRect.init(x: 0, y: 0, width: btnTmpMeasurement.frame.size.width, height: btnTmpMeasurement.frame.size.height)
popOver.center = CGPoint(x: UIScreen.main.bounds.maxX, y: UIScreen.main.bounds.midY)

这会将弹出窗口设置在垂直和水平方向的中心。 您可以定义 y 点硬编码,例如:-

popOver.popoverPresentationController?.sourceRect = CGRect.init(x: 0, y: 0, width: btnTmpMeasurement.frame.size.width, height: btnTmpMeasurement.frame.size.height)
popOver.center = CGPoint(x: UIScreen.main.bounds.maxX, y: 100.0)

关于ios - PopoverPresentation Controller 未以左上箭头方向显示在屏幕中央,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49914682/

相关文章:

iphone - 在iphone sdk中将文件夹从资源复制到文档

ios - 如何使用 CGAffineTransform Scale 更改 UIView 的高度?

python - 如何使用 Appium(最好是 python)拍摄 native iOS 屏幕截图并自动在设备/模拟器相册中查看它们?

iphone - 创建协议(protocol)后访问 UIPageViewController 的委托(delegate)方法

ios - 应用程序包不包含有效的 IOS 标识符

objective-c - 关于 NSDictionaryOfVariableBindings 将 objc 转换为 swift

ios - 我怎样才能调用其他类按钮 - Swift

iphone - extern 在 Objective-C 中做了什么?

iphone - 从 MKMapView 获取用户位置

swift - 在移动平台上移动节点