#ios
popoverPresentationController是 iOS UIKit 框架中的一个属性,用于显示弹出窗口。弹出窗口是一种模态视图控制器,可在小浮动窗口中显示内容,通常锚定在源视图或栏按钮项上,在 iPad 上很常见,但在某些配置下也可用于 iPhone。
.popover,视图控制器将获得关联的popoverPresentationController。源视图/栏按钮项目:
sourceView和sourceRect(以使弹出窗口锚定到特定视图和矩形),或者barButtonItem如果要将弹出窗口附加到栏按钮,则必须指定。
例子:
let popoverContent = UIViewController()
popoverContent.modalPresentationStyle = .popover
if let popover = popoverContent.popoverPresentationController {
popover.sourceView = someButton
popover.sourceRect = someButton.bounds
}
present(popoverContent, animated: true, completion: nil)
允许的箭头方向:
您可以设置弹出窗口可以指向的方向。可以是.up、.down、.left、.right或.any。
popover.permittedArrowDirections = .any
代表:
委托人实现UIPopoverPresentationControllerDelegate协议来控制呈现行为。
popover.delegate = self
iPhone 上的演示:
要处理点击外部以关闭弹出窗口:
extension YourViewController: UIPopoverPresentationControllerDelegate {
func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
return true // Allow dismissal on tap outside
}
}
popoverPresentationController具有高度可定制性,与其他模态视图相比,它是一种以更微妙、更特定于上下文的方式呈现内容的灵活工具。