如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?

Posted

技术标签:

【中文标题】如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?【英文标题】:How to apply different corner radius to different corners of UIView in iOS Swift? 【发布时间】:2018-05-14 08:19:44 【问题描述】:

我想使用swiftiosUIView 的不同角应用不同的角半径值。这意味着UIViewtopLeft, topRight, bottomLeft, bottomRight 角应该有不同 corner radiuous(即1、5、10、15)。怎么实现呢?

我尝试以相同的方式应用cornerRadius,但它会覆盖以前的cornerRadius 值。

【问题讨论】:

***.com/questions/10167266/… how to set cornerRadius for only top-left and top-right corner of a UIView?的可能重复 也可以通过this tutorial 查看这个答案***.com/questions/45237863/… @ReinierMelian 谢谢。这就是我要找的。至少,我从中得到了要点。 【参考方案1】:

如果您的部署目标高于 iOS 10,那么您应该使用 ma​​skedCorners

if #available(iOS 11.0, *) 
    customeView.clipsToBounds = true
    customeView.layer.cornerRadius = 5
    customeView.layer.maskedCorners = [.layerMaxXMaxYCorner, .layerMinXMaxYCorner, .layerMaxXMinYCorner, .layerMinXMinYCorner]
 

试试这个

let path = UIBezierPath(roundedRect: customeView.bounds, byRoundingCorners:[.bottomLeft, .bottomRight], cornerRadii: CGSize(width: 5, height: 5))
            let mask = CAShapeLayer()
            mask.path = path.cgPath
            customeView.layer.mask = mask

【讨论】:

这不起作用,因为它只允许将角四舍五入到一个值或根本不四舍五入。最初的海报希望不同的角圆成不同的度数。

以上是关于如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?的主要内容,如果未能解决你的问题,请参考以下文章

在 UIView 上绘制的遮罩层的角半径

iOS 13 - UISegmentedControl - 如何更改 selectedSegment 的圆角半径?

Swift - 圆角半径和阴影问题

如何为 CALayer 的角半径设置动画

如何在 UITableView 样式分组中设置单元格的角半径?

IOS - 如何在 Core Data Swift 中将数据插入到具有关系的不同表中