如何在 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 【问题描述】:我想使用swift
对ios
中UIView
的不同角应用不同的角半径值。这意味着UIView
的topLeft, 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,那么您应该使用 maskedCorners
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 的不同角?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 13 - UISegmentedControl - 如何更改 selectedSegment 的圆角半径?