Это не проблема а особенность реализации
Что бы закруглять углы нужно отдельно для каждого лейбла расчитывать градиент:
class CustomLabel: UILabel {
required init?(coder: NSCoder) {
super.init(coder: coder)
config()
}
override init(frame: CGRect) {
super.init(frame: frame)
config()
}
override func layoutSubviews() {
super.layoutSubviews()
setBackground()
}
private func config() {
layer.masksToBounds = true
layer.cornerRadius = 6
}
private func setBackground() {
guard let superSize = superview?.frame.size else { return }
let colorSpace = CGColorSpaceCreateDeviceRGB()
guard let context = CGContext(data: nil, width: Int(superSize.width), height: Int(superSize.height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue) else { return }
let colors = [
UIColor.red.cgColor,
UIColor.blue.cgColor,
UIColor.green.cgColor
]
guard let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: nil) else { return }
context.drawLinearGradient(gradient, start: CGPoint(x: superSize.width / 2, y: superSize.height), end: CGPoint(x: superSize.width / 2, y: 0), options: .drawsBeforeStartLocation)
guard let cgImage = context.makeImage()?.cropping(to: frame) else { return }
backgroundColor = UIColor(patternImage: UIImage(cgImage: cgImage))
}
}