【发布时间】:2015-06-30 18:55:50
【问题描述】:
我已经查看了 Xcode 6.3 中标签的属性,但我还没有发现如何像圆角文本字段的边缘那样圆角边缘。
【问题讨论】:
我已经查看了 Xcode 6.3 中标签的属性,但我还没有发现如何像圆角文本字段的边缘那样圆角边缘。
【问题讨论】:
诀窍是将maskToBounds 设置为true。然后您对cornerRadius 的修改将可见。
label.layer.masksToBounds = true
label.layer.cornerRadius = 5
【讨论】:
假设您在标签中添加了backgroundColor,否则无法判断它是否有边缘,您可以使用 QuartzCore 对标签的边缘进行圆角处理。
import QuartzCore
yourLabel.layer.backgroundColor = UIColor.redColor().CGColor
yourLabel.layer.cornerRadius = 5
yourLabel.layer.masksToBounds = true
【讨论】:
使用标签层圆角半径来做到这一点,
mylabel.layer.cornerRadius = yourvalue
如果你不想显示阴影然后添加,
mylabel.layer.masksToBounds = true
它对我很有效。
【讨论】:
clipToBounds。
clipToBounds 属性也可以在 Interface Builder (Storyboard) 中标签的属性检查器中启用,位于视图的绘图部分下。
你可以给cornerRadius和这样的边框。
对于 Swift 5、4 和 3
MyLable.layer.masksToBounds = true
MyLable.layer.cornerRadius = 6
MyLable.layer.borderWidth = 2
MyLable.layer.borderColor = UIColor.black.cgColor
对于 Objective-C
[MyLable.layer setMasksToBounds:TRUE];
[MyLable.layer setCornerRadius:6];
[MyLable.layer setBorderWidth:2];
[MyLable.layer setBorderColor:[UIColor blackColor].CGColor];
【讨论】:
对任何CALayer 进行圆角处理的方法是修改layer.cornerRadius。默认情况下,这只会影响您应用的背景颜色和任何图层边框。您还可以启用clipsToBounds 来裁剪像素内容。
当一个视图(例如UILabel)绘制自己时,它会将自己绘制到图层的像素内容中。您可以抓住view.layer 访问图层。
因此您可以设置该层的圆角半径来影响视图的背景颜色。您还可以启用clipsToBounds 以裁剪视图中的任何内容。如果视图本身不会太靠近边缘,那应该可以实现您想要的。标签应该是正确的。
【讨论】:
斯威夫特:
//round shape corner radius set
self.lblName.layer.masksToBounds = true
self.lblName.layer.cornerRadius = self.lblName.bounds.width / 2
//custom shape corner radius set
self.lblName.layer.masksToBounds = true
self.lblName.layer.cornerRadius = 12
【讨论】:
在带有 Swift 3 的 Xcode 8.1.2 中运行良好,在 2017 年 8 月测试
“cornerRadius”是设置圆角边缘的关键属性,如果您对应用程序中的所有标签使用相同的样式,我建议您使用扩展方法。
代码:
// extension Class
extension UILabel {
// extension user defined Method
func setRoundEdge() {
let myGreenColor = (UIColor(red: -0.108958, green: 0.714926, blue: 0.758113, alpha: 1.0))
//Width of border
self.layer.borderWidth = 1.0
//How much the edge to be rounded
self.layer.cornerRadius = 5.0
// following properties are optional
//color for border
self.layer.borderColor = myGreenColor.cgColor
//color for text
self.textColor = UIColor.red
// Mask the bound
self.layer.masksToBounds = true
//clip the pixel contents
self.clipsToBounds = true
}
}
输出:
为什么要扩展方法?
创建一个 Swift 文件并将以下代码添加到“UILabel”类中,其中包含 Extention 方法,该方法是用户定义的,但适用于应用程序中的所有标签,有助于保持一致性和干净的代码,如果您将来更改任何样式,只需要在扩展方法中。
【讨论】:
您使用 IBInspectable 为 UIView 创建扩展
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(cgColor: layer.borderColor!)
}
set {
layer.borderColor = newValue?.cgColor
}
}
}
【讨论】: