Popover视图控制器的角半径

时间:2019-07-18 23:59:50

标签: ios swift xcode uiviewcontroller uipopovercontroller

我想更改Popoverview的拐角半径。

下面是我的代码。

class PopOverViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
   }

   override func viewWillLayoutSubviews() {
         super.viewDidLayoutSubviews()
         self.view.superview?.layer.cornerRadius = 0.0
         self.view.superview?.layer.masksToBounds = true
    }
}

我正在展示如下视图控制器

if let popoverPresentationController = popOverViewController.popoverPresentationController {
            popoverPresentationController.permittedArrowDirections = .down
            popoverPresentationController.sourceView = tabBar
            popoverPresentationController.sourceRect = rect
            popoverPresentationController.delegate = self
            popoverPresentationController.canOverlapSourceViewRect = false
            popOverViewController.preferredContentSize = CGSize(width: 341, height: 68)
            self.present(popOverViewController, animated: true, completion: {
            })
        }

它总是显示圆角。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

到目前为止,尚无支持的方法来使带有圆角的Popover视图控制器成为可能。 UIPopoverController的工作方式是将您的视图添加到带有圆角且可裁剪到边界的视图中。

有两种解决方法:

  1. 请等待弹出窗口控制器的显示,然后遍历其父级并将半径设置为0,并将边界裁剪为false。这有点hacky,它可能与过去和将来的所有iOS版本都不兼容。我不建议这样做。
  2. 创建自己的类,该类模仿与UIPopoverController相同的功能。这是解决问题的最佳方法。