1

Ich benutze einen PopoverController und möchte den Hintergrundschatten loswerden. Apple sagt, die UIPopoverBackgroundView SubClass und Rück false für override class var wantsDefaultContentAppearance: Bool { get }Swift iOS -Wie verbinden Methode in UIPopoverBackgroundView-Klasse mit einem PopoverController in einer anderen Klasse?

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

ich es subclassed und stellen Sie den Bool false aber der Schatten noch zeigt. Wie verbinde ich diese Unterklasse mit dem PopoverController, den ich in meinem ActionScript in meiner LogoutClass verwende?

UIPopoverBackgroundView Unterklasse:

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

Antwort

3

Sie werden sich wie so popoverBackgroundViewClass Eigentum Ihrer UIPopoverPresentationController Instanz festgelegt haben:

Objective C:

popoverController.popoverBackgroundViewClass = [PopoverBackgroundView class]; 

Swift

popoverController?.popoverBackgroundViewClass = PopoverBackgroundView.self 

Wie pro Apple-docs:

Der Standardwert dieser Eigenschaft ist null, die die Präsentation Controller bewirkt, dass die Standard popover Aussehen zu verwenden. Wenn diese Eigenschaft auf einen anderen Wert als nil gesetzt wird, verwendet der Präsentations-Controller die angegebene Klasse zum Zeichnen des Hintergrundinhalts des Popovers. Die von Ihnen angegebene Klasse muss eine Unterklasse von UIPopoverBackgroundView sein.

+0

danke für die Hilfe. Ich habe es versucht, aber der Schatten ist immer noch da, also bin ich mir nicht sicher, ob es funktioniert oder nicht. –

+0

es funktioniert immer noch nicht, aber Ihre Antwort ist richtig. Mit der Implementierung der Hintergrundklasse stimmt etwas nicht. Trotzdem danke –

Verwandte Themen