Popover 视图控制器的角半径

Posted

技术标签:

【中文标题】Popover 视图控制器的角半径【英文标题】:Corner radius for Popover view controller 【发布时间】:2019-07-18 23:59:50 【问题描述】:

我想改变 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: 
            )
        

它总是显示圆角。

感谢任何帮助。

【问题讨论】:

我尝试在 viewDidAppear viewWillAppear 中更改圆角半径,但仍然没有成功。 How to remove rounded corners in PopoverView?的可能重复 【参考方案1】:

截至目前,还没有支持的方法可以让弹出视图控制器具有非圆角。 UIPopoverController 的工作方式是将您的视图添加到带有圆角的视图中,该圆角剪辑到边界。

有两种方法可以解决这个问题:

    等待弹出框控制器显示,然后遍历其父级并将半径设置为 0 并将剪辑到边界设置为 false。这有点骇人听闻,它可能与过去和未来的所有 ios 版本都不兼容。我不建议这样做。 创建您自己的类来模仿与 UIPopoverController 相同的功能。这是解决您的问题的最佳方式。

【讨论】:

以上是关于Popover 视图控制器的角半径的主要内容,如果未能解决你的问题,请参考以下文章

设置 `UISegmentedControl` 的角半径等于 `UISearchController`

更改模态视图控制器的cornerRadius

Xcode5 iOS7 - UIPopoverController 角半径

iPad 上的快照模式视图控制器出现非圆角

获取视图的角半径值

未显示超级视图子视图 UIView 的角半径