私が表示するポップオーバーが正しく表示されなくなりました。矢印側に欠けている線があります。矢印の先に少し黒い部分があることを確認できます。中には景色が長すぎると思います。
ポップオーバーを表示するコード:
_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)
ポップオーバーを初期化するコード:
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
IOS13バージョンのiOSバグだと思います。そのgitプロジェクトを使用して独自のポップオーバーを実行することをお勧めします。
DDPopoverBackgroundView
これをポップオーバーの表示に使用します。
// 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)
})
楽しい ! ;-)
安全領域を使用して、この変更に対応することはできません。私の考えでは、これはiOS 13のバグであり、その理由を説明します...
UIPopoverArrowDirectionAnyを使用する状況では、矢印がポップオーバーの上部または左側にある場合にのみ問題が発生し、矢印がポップオーバーの右側または下部に表示される場合には発生しないことがわかります。コードで調整を行って補正する場合、UIPopoverArrowDirectionUpまたはUIPopoverArrowDirectionLeftを使用すると機能しますが、UIPopoverArrowDirectionAnyを使用しているときにその調整を使用すると正しく表示されず、ポップアップがターゲットの四角形の上または右側に表示されます。
この回答 で述べたように、UIPopoverのコンテンツビューに矢印が含まれるのはiOS 13の新機能です。この変更に適切に対応するには、安全領域を使用する必要があります。