[英]How to grow a popover controller
我的应用程序中有一个弹出框 controller 用于 iPad 和 Mac(使用 mac 催化剂),我试图弄清楚如何在弹出框已经显示时增加它的高度。 我一直在到处寻找如何做到这一点,但我发现的一切都是关于在展示之前而不是之后设置尺寸。
弹出窗口显示时,其中有一个按钮应该将高度增加 100-150 像素,但我不知道如何
谁能帮我解决这个问题? 先感谢您!
这是我的弹出窗口呈现代码:
func openView(sourceView: UIView?, sourceRect: CGRect?) {
let vc = ViewControllerA()
//Try popover
if let sourceView = sourceView,
let sourceRect = sourceRect {
vc.modalPresentationStyle = .popover
if let popover = vc.popoverPresentationController {
vc.preferredContentSize = return CGSize(width: 390, height: 390)
vc.presentationController?.delegate = self
popover.sourceView = sourceView
popover.sourceRect = sourceRect
popover.permittedArrowDirections = [.up, .left]
self.present(vc, animated: true, completion: nil)
return
}
}
//present it normally if there's no source view
vc.modalPresentationStyle = .overCurrentContext
vc.modalTransitionStyle = .crossDissolve
self.present(vc, animated: true, completion: nil)
}
要在弹出视图中更改显示的 controller 的大小,您应该修改其preferredContentSize
属性:
@IBAction func showPopover(_ sender: UIButton) {
// Create controller
guard let controller = storyboard?.instantiateViewController(withIdentifier: "Popover") else {
return
}
controller.modalPresentationStyle = .popover
controller.preferredContentSize = CGSize(width: 200, height: 200)
// Configure popover
guard let popover = controller.popoverPresentationController else {
return
}
popover.permittedArrowDirections = .up
popover.sourceView = self.view
popover.sourceRect = sender.frame
popover.delegate = self
present(controller, animated: true, completion: nil)
// Change height after 3 secs
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
controller.preferredContentSize = CGSize(width: 200, height: 400)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.