PopoverPresentation Controller 未显示在屏幕中央,左上箭头方向 [英] PopoverPresentation Controller not displaying on centre of the screen with the top left arrow direction
本文介绍了PopoverPresentation Controller 未显示在屏幕中央,左上箭头方向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在屏幕中央显示弹出窗口.下图显示它正在移动左侧的位.
I want to display pop up in a centre of the screen. The below image displaying it's moving the bit of left side.
我尝试了以下代码来显示弹出框控制器.
I have tried below code to display popover 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) {}
}
如果我写了任何错误的代码,请纠正我.
Please correct me if I've written any incorrect code.
推荐答案
用户下面的代码可以在屏幕中央设置弹出框.
User below code to set popover in the center of screen.
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 点硬编码,如:-
This will set popover in center for both vertically and horizontally. You can define y point hardcoded like:-
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)
这篇关于PopoverPresentation Controller 未显示在屏幕中央,左上箭头方向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文