1

J'utilise un PopoverController et je veux me débarrasser de l'ombre d'arrière-plan. Apple dit le UIPopoverBackgroundView et sous-classement retourner false pour override class var wantsDefaultContentAppearance: Bool { get }Swift iOS -Comment connecter la méthode dans UIPopoverBackgroundView Class à un PopoverController dans une classe différente?

https://developer.apple.com/documentation/uikit/uipopoverbackgroundview/1619357-wantsdefaultcontentappearance

et je sous-classé régler la bool false mais l'ombre montre encore. Comment connecter cette sous-classe au PopoverController que j'utilise dans ma Feuille d'Actions dans ma LogoutClass?

sous-classe UIPopoverBackgroundView:

class PopoverBackgroundView: UIPopoverBackgroundView { 

override class var wantsDefaultContentAppearance: Bool { 
     get { 
      return false 
     } 
    } 
} 

LogoutController:

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) 
} 
} 

Répondre

3

Vous devrez définir la propriété popoverBackgroundViewClass de votre UIPopoverPresentationController par exemple comme ceci:

Objectif C:

popoverController.popoverBackgroundViewClass = [PopoverBackgroundView class]; 

Swift

popoverController?.popoverBackgroundViewClass = PopoverBackgroundView.self 

Comme par docs d'Apple:

La valeur par défaut de cette propriété est nulle, ce qui provoque le contrôleur de présentation à utiliser l'apparence popover par défaut. Si cette propriété est définie sur une valeur autre que zéro, le contrôleur de présentation utilise la classe spécifiée pour dessiner le contenu d'arrière-plan du survol. La classe que vous spécifiez doit être une sous-classe de UIPopoverBackgroundView .

+0

merci pour l'aide. J'ai essayé mais l'ombre est toujours là donc je ne sais pas si ça marche ou pas. –

+0

son ne fonctionne toujours pas mais votre réponse est correcte. Il y a un problème avec l'implémentation de la classe d'arrière-plan. Merci quand même –