我正在设置uilabel图层cornerRadius,有时标签在标签的某些角落/边缘有额外的线条,有没有办法避免这种情况?
请在屏幕截图下方找到。
代码:
//Message view
let messageLabel = UILabel()
messageLabel.backgroundColor = #someColor
messageLabel.textColor = #someColor
messageLabel.font = UIFont.systemFont(ofSize: 14)
messageLabel.lineBreakMode = NSLineBreakMode.byWordWrapping
messageLabel.attributedText = attributedString
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center
messageLabel.shadowColor = UIColor.clear
messageLabel.layer.cornerRadius = 3.0
let maskPath = UIBezierPath(roundedRect: messageLabel.bounds,
byRoundingCorners: [.topLeft, .topRight, .bottomRight],
cornerRadii: CGSize(width: 18.0, height: 0.0))
let maskLayer = CAShapeLayer()
maskLayer.path = maskPath.cgPath
messageLabel.layer.mask = maskLayer
答案 0 :(得分:2)
如果frame
具有小数x
/ y
/ width
/ height
值,则可能会出现这类问题。
如果是这种情况,请尝试使用以下功能之一对所有值进行舍入:round()
,ceil()
或floor()