前言:
此種方式實現只適用于pad開發,在iPhone上是無效的。
實現:
比如我在界面上有一個按鈕,點擊按鈕,在按鈕旁邊彈出一個Pop框。
1、按鈕點擊事件
btn.addTarget(self, action: #selector(self.popShow), for: .touchUpInside)
2、事件處理
/// 彈框選擇條件 /// /// - Parameter sender: <#sender description#> func popShow(sender:UIButton) { let popVC = ExerciseLibPopViewController() popVC.modalPresentationStyle = .popover popVC.preferredContentSize = CGSize(width: 111, height: 2*44.0) popVC.popoverPresentationController?.sourceView = sender popVC.popoverPresentationController?.sourceRect = sender.bounds popVC.popoverPresentationController?.delegate = self self.present(popVC, animated: true, completion: nil) }
其中,popover類有一個代理:
extension xxxViewController : UIPopoverPresentationControllerDelegate { func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool { print("popoverPresentationControllerShouldDismissPopover") // 處理你要做的 return true }}
類似效果如下:
最后小Tips:
1、如果這里需要把上圖的小箭頭背景色改成其他顏色(和里面顏色一致)
加上這句即可:
popVC.popoverPresentationController?.backgroundColor = UIColor.white
2、如果想改變彈出框位置,修改這句即可:
// 將bounds改成CGRect(x,y,w,h)自己構造參數popVC.popoverPresentationController?.sourceRect = sender.bounds
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答