Le popover que j'affiche est maintenant mal affiché. Il manque une ligne du côté de la flèche. On peut vérifier qu'il y a un petit morceau de noir juste au bout de la flèche. Je pense qu'il y a une vue à l'intérieur qui est trop longue.
Code pour afficher le popover:
_popoverController = UIPopoverController(contentViewController: navController)
_popoverController?.delegate = self
let rect = slotCollectionView.cellForItem(at: indexPath)!.frame
self._popoverController?.backgroundColor = UIColor.init(rgb: Int(quaternaryColorHexa))
self._popoverController?.present (from: rect, in: self.slotCollectionView, permittedArrowDirections: UIPopoverArrowDirection.any, animated: true)
Code pour lancer Popover:
override func viewDidLoad()
{
super.viewDidLoad()
self.preferredContentSize = contentSize()
self.navigationController!.preferredContentSize = self.preferredContentSize;
peopleTableView.isScrollEnabled = true
peopleTableView.bounces = true
peopleTableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
peopleTableView.tableFooterView?.isHidden = true
peopleTableView.backgroundColor = UIColor.init(rgb: Int(quinquenaryColorHexa))
self.view.backgroundColor = UIColor.init(rgb: Int(quinquenaryColorHexa))
self.view.layer.cornerRadius = 13.0
self.view.layer.borderWidth = 1.5
self.view.layer.borderColor = UIColor.init(rgb: Int(quaternaryColorHexa)).cgColor
Je pense que c'est un bug iOS dans la version iOS13, et je vous conseille de faire votre propre popover en utilisant ce projet git:
DDPopoverBackgroundView
et en l'utilisant pour afficher le popover:
// Popover
_popoverController = UIPopoverController(contentViewController: navController)
_popoverController?.delegate = self
let rect = slotCollectionView.cellForItem(at: indexPath)!.frame
self._popoverController!.contentSize = CGSize(width: 350, height: 600)
self._popoverController!.backgroundViewClass = DDPopoverBackgroundView.self
self._popoverController!.backgroundColor = UIColor.init(rgb: Int(quaternaryColorHexa)) //arrow color
OperationQueue.main.addOperation({
self._popoverController?.present(from: rect, in: self.slotCollectionView, permittedArrowDirections: UIPopoverArrowDirection.any, animated: true)
})
prendre plaisir ! ;-)
Vous ne pouvez pas utiliser la zone de sécurité pour réagir à ce changement. Mon sentiment est que c'est un bug dans iOS 13 et je vais vous expliquer pourquoi ...
Lorsque vous avez une situation où vous utilisez UIPopoverArrowDirectionAny, vous verrez que le problème existe uniquement lorsque la flèche se trouve en haut ou à gauche du popover et non pas lorsque la flèche apparaît à droite ou en bas du popover. Si vous effectuez des ajustements dans votre code pour compenser, cela fonctionnera si vous utilisez UIPopoverArrowDirectionUp ou UIPopoverArrowDirectionLeft mais ne s'affichera pas correctement en utilisant cet ajustement lorsque vous utilisez UIPopoverArrowDirectionAny et la fenêtre contextuelle apparaît au-dessus ou à droite du rectangle cible.
Comme mentionné dans cette réponse c'est une nouvelle fonctionnalité d'iOS 13 que UIPopovers inclut les flèches dans leurs vues de contenu. Vous devez utiliser la zone de sécurité pour réagir correctement à ce changement.