Ios popoverPresentationController(u:willRespositionPopOverto:in:)正在尝试更改不同方向上弹出窗口的大小
我有一个弹出窗口,当方向改变时,我试图改变宽度。当弹出窗口以当前方向显示时,我得到了所需的宽度,但当我从.trait->.scape切换时,我没有得到所需的宽度。例如,它只保留了一次.trait 我阅读了关于popoverPresentationController的文档(u3;:willPopOverto:in:) 但我不知道它是怎么工作的。 事实上,当我改变方向时,它甚至没有调用。我使用的UIPopoverPresentationControllerDelegate的其余部分工作正常 这是更改弹出窗口大小的正确方法,还是我应该使用其他方法 有什么帮助吗?非常感谢Ios popoverPresentationController(u:willRespositionPopOverto:in:)正在尝试更改不同方向上弹出窗口的大小,ios,swift,uipopovercontroller,Ios,Swift,Uipopovercontroller,我有一个弹出窗口,当方向改变时,我试图改变宽度。当弹出窗口以当前方向显示时,我得到了所需的宽度,但当我从.trait->.scape切换时,我没有得到所需的宽度。例如,它只保留了一次.trait 我阅读了关于popoverPresentationController的文档(u3;:willPopOverto:in:) 但我不知道它是怎么工作的。 事实上,当我改变方向时,它甚至没有调用。我使用的UIPopoverPresentationControllerDelegate的其余部分工作正常 这是更
func popoverPresentationController(_ popoverPresentationController: UIPopoverPresentationController, willRepositionPopoverTo rect: UnsafeMutablePointer<CGRect>, in view: AutoreleasingUnsafeMutablePointer<UIView>) {
if popoverPresentationController.presentingViewController is PopUpTextPickerViewController{
let viewFrame = popoverPresentationController.presentingViewController.view.frame
let newRect = CGRect(x: viewFrame.origin.x, y: viewFrame.origin.y, width: self.view.bounds.width, height: 100)
let newView = UIView(frame: newRect)
rect.pointee = newRect
view.pointee = newView
}
print("popoverPresentation:willRepositionPopOverTo")
}
//Shows the PopUpTextPickerViewController on the screen
@IBAction func fontButtonPressed(_ sender: UIBarButtonItem) {
subscribeToNotifications(notification: .popUpTextPickerViewController)
let fontController = storyboard?.instantiateViewController(withIdentifier: "popUpTextPickerViewController") as! PopUpTextPickerViewController
fontController.fontName = self.fontName
fontController.fontSize = self.fontSize
fontController.modalPresentationStyle = UIModalPresentationStyle.popover
fontController.popoverPresentationController?.delegate = self
fontController.popoverPresentationController?.barButtonItem = fontButton
fontController.popoverPresentationController?.backgroundColor = .clear
fontController.popoverPresentationController?.sourceView = self.view
fontController.preferredContentSize = CGSize(width: self.view.bounds.width, height: 100)
present(fontController, animated: true, completion: nil)
}
func popoverPresentationController(popoverPresentationController:UIPopoverPresentationController,将PopOverTo rect:UnsafemeutablePointer重新定位到视图中:AutoreleasingUnsafemeutablePointer){
如果popoverPresentationController.presentingViewController是PopupExtPickerServiceController{
让viewFrame=popoverPresentationController.presentingViewController.view.frame
设newRect=CGRect(x:viewFrame.origin.x,y:viewFrame.origin.y,宽度:self.view.bounds.width,高度:100)
让newView=UIView(帧:newRect)
rect.pointee=newRect
view.pointee=newView
}
打印(“popoverPresentation:WillPopOverto”)
}
//在屏幕上显示PopUpTextPickerViewController
@iAction func fontButtonPressed(u发件人:UIBarButtonItem){
subscribeToNotifications(通知:.popUpTextPickerViewController)
让fontController=storyboard?.InstanceEviewController(标识符为:“popUpTextPickerViewController”)作为!popUpTextPickerViewController
fontController.fontName=self.fontName
fontController.fontSize=self.fontSize
fontController.modalPresentationStyle=UIModalPresentationStyle.popover
fontController.popoverPresentationController?.delegate=self
fontController.popoverPresentationController?.barButtonItem=fontButton
fontController.popoverPresentationController?.backgroundColor=.clear
fontController.popoverPresentationController?.sourceView=self.view
fontController.preferredContentSize=CGSize(宽度:self.view.bounds.width,高度:100)
当前(fontController,动画:真,完成:无)
}
尝试在父视图控制器中实现以下代码。UIKit在更改显示的视图控制器视图的大小之前调用此方法-
override func viewWillTransition(to size: CGSize,
with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if let myVC = self.presentedViewController as? MyViewController {
myVC.preferredContentSize = CGSize(width: {yorWidth}, height: {yourHeight})
}
}
尝试在父视图控制器中实现以下代码。UIKit在更改显示的视图控制器视图的大小之前调用此方法-
override func viewWillTransition(to size: CGSize,
with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if let myVC = self.presentedViewController as? MyViewController {
myVC.preferredContentSize = CGSize(width: {yorWidth}, height: {yourHeight})
}
}
你明白了吗?你明白了吗?