尝试以特定尺寸显示弹出控制器
Trying to display popover controller on certain size
找到几个如何使用弹出窗口的视频,并尝试只用故事板制作相同的视频,所以我明白了:
但是,使用应用程序 运行,当我按下按钮时,这个橙色的小控制器占据了所有的绿色屏幕,并且看起来不像我预期的那样带有箭头的小弹出窗口。
为了能够在弹出窗口中显示这样的 ViewController(橙色的),您必须将 modalPresentationStyle
定义为 popover
这样做:
class ParentViewController: UIViewController, UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "PopoverSegue" {
let popoverVc = segue.destination
popoverVc.modalPresentationStyle = .popover
popoverVc.popoverPresentationController?.delegate = self;
popoverVc.preferredContentSize = CGSize(width: 250, height: 250)
}
}
}
记得在界面生成器中设置 segue 标识符(PopoverSegue
或其他):
以下自由格式大小(在运行时忽略)对于在界面构建器中模拟弹出视图很重要:
最终结果是:
根据需要调整大小、箭头和 sourceRect
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var des = segue.destination
des.modalPresentationStyle = UIModalPresentationStyle.popover
des.popoverPresentationController?.permittedArrowDirections = .left
des.popoverPresentationController?.delegate = self
des.popoverPresentationController?.sourceView = self.view
des.popoverPresentationController?.sourceRect = CGRect.init(x: 300, y: 0, width: 50, height: 8 )
des.preferredContentSize = CGSize.init(width: 200, height: 200)
}
找到几个如何使用弹出窗口的视频,并尝试只用故事板制作相同的视频,所以我明白了:
但是,使用应用程序 运行,当我按下按钮时,这个橙色的小控制器占据了所有的绿色屏幕,并且看起来不像我预期的那样带有箭头的小弹出窗口。
为了能够在弹出窗口中显示这样的 ViewController(橙色的),您必须将 modalPresentationStyle
定义为 popover
这样做:
class ParentViewController: UIViewController, UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "PopoverSegue" {
let popoverVc = segue.destination
popoverVc.modalPresentationStyle = .popover
popoverVc.popoverPresentationController?.delegate = self;
popoverVc.preferredContentSize = CGSize(width: 250, height: 250)
}
}
}
记得在界面生成器中设置 segue 标识符(PopoverSegue
或其他):
以下自由格式大小(在运行时忽略)对于在界面构建器中模拟弹出视图很重要:
最终结果是:
根据需要调整大小、箭头和 sourceRect
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var des = segue.destination
des.modalPresentationStyle = UIModalPresentationStyle.popover
des.popoverPresentationController?.permittedArrowDirections = .left
des.popoverPresentationController?.delegate = self
des.popoverPresentationController?.sourceView = self.view
des.popoverPresentationController?.sourceRect = CGRect.init(x: 300, y: 0, width: 50, height: 8 )
des.preferredContentSize = CGSize.init(width: 200, height: 200)
}