修改模态视图控制器的cornerRadius。

6

我的目标是将模态展现的控制器的角半径增加到25。如您所见,在默认情况下它有圆角,但我需要它们具有更大的半径。我尝试通过访问控制器视图来实现圆角,但它没有起作用。

view.layer.cornerRadius = 25

我在苹果文档中没有找到任何提及它的地方,有没有办法让它工作?这是否可能?

输入图像描述

4个回答

6

通过将你所展示的视图控制器的顶部视图背景设置为透明,可以实现隐藏呈现者正在圆角化的视图的效果。然后只需将下一个顶部视图的角度圆角化到所需数量即可。


2
你无法这样做,因为那是由苹果创建的自定义演示控制器,属于受保护/私有API,以符合iOS 13及以上版本中苹果生态系统的新设计标准。你可以创建自己的UIPresentationController子类实现,然后将角落修圆至任何半径。然而,使用手势交互良好的UIPresentationController子类进行派生,即使是第一级滚动视图的嵌套,也是一项具有挑战性的任务。在尝试覆盖默认设置之前,建议您查看一些示例代码,因为除非您精通UIKit、Foundation和iOS委托,否则这样做很快就会陷入混沌的黑洞。

0

我知道,对于您来说可能已经太晚了,但也许对其他人有用。我使用了带有掩码的层(梯度),但我认为,您可以根据自己的需求进行修改。

    self.view.backgroundColor = .clear
    let mask = CAShapeLayer()

    mask.path = UIBezierPath(roundedRect: tableView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize.init(width: 25, height: 25)).cgPath

    // You can use with layer of viewConroller's view
    self.view.layer.backgroundColor = UIColor.green.cgColor
    self.view.layer.mask = mask

    // And gradient background for VC
    let gradient = CAGradientLayer()
    gradient.colors = [UIColor.green.cgColor, UIColor.blue.cgColor]
    gradient.frame = view.bounds
    gradient.mask = mask
    self.view.layer.insertSublayer(gradient, at: 0)


    

0
从iOS15+开始,在UISheetPresentationController上有一个名为preferredCornerRadius的变量。
if let sheet = nav.sheetPresentationController {
   sheet.detents = [.large(), .medium()]
   sheet.preferredCornerRadius = 20
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接