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`