Vad*_*aev 1 uipopovercontroller ios swift
我已经为UIButton实现了popover:
@objc func showList(sender: AnyObject?) {
guard let buttonView = sender?.value(forKey: "view") as? UIButton else { return }
guard let popVC = R.storyboard.first.VC() else { return }
popVC.modalPresentationStyle = .popover
let popOverVC = popVC.popoverPresentationController
popOverVC?.delegate = self
popOverVC?.sourceView = buttonView
popOverVC?.sourceRect = CGRect(x: 0, y: 190, width: 0, height: 0)
popOverVC?.permittedArrowDirections = .init(rawValue: 0)
popVC.preferredContentSize = CGSize(width: 150, height: 250)
showedViewController.present(popVC, animated: true, completion: nil)
}
extension VCInteractor: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是我需要一个修复程序-我想UIVisualEffectBackdropView为弹出窗口隐藏起来(就像UITableViewController下的模糊效果一样)。因此,我找不到任何有关如何禁用(隐藏)这种模糊的信息,您有任何想法吗?
我已经解决了自定义类的问题
class PopoverBackgroundView: UIPopoverBackgroundView {
override init(frame: CGRect) {
super.init(frame: frame)
self.layer.shadowColor = UIColor.clear.cgColor
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override static func contentViewInsets() -> UIEdgeInsets {
return UIEdgeInsets.zero
}
override static func arrowHeight() -> CGFloat {
return 0
}
override var arrowDirection: UIPopoverArrowDirection {
get { return UIPopoverArrowDirection.down }
set {
setNeedsLayout()
}
}
override var arrowOffset: CGFloat {
get { return 0 }
set {
setNeedsLayout()
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且我已经像那样添加了它
popOverVC?.popoverBackgroundViewClass = PopoverBackgroundView.self
Run Code Online (Sandbox Code Playgroud)
就这样
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |