Lan*_*ria 1 uiactionsheet uipopovercontroller ios swift uialertcontroller
我正在使用 PopoverController 并且我想摆脱背景阴影。苹果表示,要继承和UIPopoverBackgroundView回报false为override class var wantsDefaultContentAppearance: Bool { get }
我将其子类化并将布尔值设置为false但阴影仍然显示。如何将此子类连接到我在 LogoutClass 的 Actionsheet 中使用的 PopoverController?
UIPopoverBackgroundView 子类:
class PopoverBackgroundView: UIPopoverBackgroundView {
override class var wantsDefaultContentAppearance: Bool {
        get {
            return false
        }
    }
}
登出控制器:
class LogoutController:UIViewController{
fileprivate func logOff(){
let actionSheet = UIAlertController(title: nil, message: "Logging out?", preferredStyle: .actionSheet)
 let logout = UIAlertAction(title: "Log Out", style: .default){
            (action) in
//bla bla bla
}
actionSheet.addAction(logout)
if let popoverController = actionSheet.popoverPresentationController{
            popoverController.sourceView = view
            guard let window = UIApplication.shared.keyWindow else { return }
            window.backgroundColor = .clear
            popoverController.sourceRect = CGRect(x:window.bounds.midX, y:window.bounds.midY, width:0, height:0)
            popoverController.permittedArrowDirections = []
        }
present(actionSheet, animated: true, completion: nil)
}
}
您必须像这样设置实例的popoverBackgroundViewClass属性UIPopoverPresentationController:
目标C:
popoverController.popoverBackgroundViewClass = [PopoverBackgroundView class];
迅速
popoverController?.popoverBackgroundViewClass = PopoverBackgroundView.self
根据 Apple 文档:
此属性的默认值为 nil,这会导致呈现控制器使用默认的弹出框外观。将此属性设置为 nil 以外的值会导致表示控制器使用指定的类来绘制弹出框的背景内容。您指定的类必须是 UIPopoverBackgroundView 的子类。