UILabel 图层背景色部分填充意外

UILabel layer background color partial fill unintended

目前显示的标签在右上角和右下角设置了自定义半径。但是,标签的背景颜色并未完全填充。

已尝试将图层 maskToBounds 属性 设置为 true 和 false。 尝试以编程方式将 dateLabel.backgroundColordateLabel.layer.backgroundColor 更改为故事板中默认的所需深蓝色,试图重新填充标签但没有成功。

@IBOutlet weak var dateLabel: UILabel! { didSet { 
    dateLabel.round(corners: [.topRight, .bottomRight], radius: 15, borderColor: UIColor.cyan, borderWidth: 3.0)
    dateLabel.setNeedsLayout()
}}

override func viewDidLayoutSubviews() {
    dateLabel.layoutIfNeeded()
}

override func viewDidLoad() {
    super.viewDidLoad()
    dateLabel.layer.backgroundColor = UIColor.blue
}

标签未完全填满其视图的可能原因是什么?有什么解决方案可用?

问题肯定是角函数的使用,它将子层添加到您的 UIlable ,每个子层都有自己的背景颜色,因此您可以找到另一种圆角方式而不使用添加子层的函数或在您的viewDidLoad 遍历层 layer.sublayers 的子层 属性 ,这是一个子层数组,并将背景颜色应用于每个子层,或者向 UIView 扩展(角函数)添加一个函数来实现这种颜色之王赋值然后调用该函数。