2015-06-30 313 views
20

我已经查看了Xcode 6.3中标签的属性,但是我还没有发现如何以与可以围绕文本字段的边缘相同的方式圆化边缘。如何用Swift圆形UILabel的边缘

+2

可能重复的工作[如何创建一个圆角的的UILabel对iPhone?](http://stackoverflow.com/questions/510382/how-do-i-创建一个圆角 - 在iphone上的uilabel) – sylvanaar

回答

30

假设您已将backgroundColor添加到您的标签,否则将无法确定它是否存在边缘,您可以使用QuartzCore四舍五入标签的边缘。

import QuartzCore 

yourLabel.layer.backgroundColor = UIColor.redColor().CGColor 
yourLabel.layer.cornerRadius = 5 
11

圆任何CALayer的边角的方法是修改layer.cornerRadius。默认情况下,这只会影响背景颜色和您应用的任何图层边框。您还可以启用clipsToBounds剪辑像素内容。

当一个视图(如UILabel)自己绘制时,它将自己绘制到图层的像素内容。您可以抓取view.layer来访问图层。

因此,您可以设置该图层的角半径以影响视图的背景颜色。您还可以启用clipsToBounds来裁剪视图内的任何内容。如果视图本身并没有太接近边缘,那应该达到你想要的。标签应该是正确的。

+4

很好的答案!基本上这意味着你必须添加这一行:L.backgroundColor = UIColor.blackColor(); L.layer.cornerRadius = 5.0; L.clipsToBounds = true //其中L是你的UILabel –

+0

这应该是公认的答案! –

20

使用标签层角落raious要做到这一点,

mylabel.layer.cornerRadius = yourvalue 

如果你不想阴影再加入

mylabel.layer.masksToBounds = true 

它为我工作的罚款。

+0

请注意,现在在Swift 3和更高版本中这是'clipToBounds'。 –

78

诀窍是将maskToBounds设置为true。然后您将看到对cornerRadius的修改。

label.layer.masksToBounds = true 
label.layer.cornerRadius = 5 
+1

这应该是正确的答案。恕我直言 – eharo2

1

正常工作在Xcode 8.1.2与斯威夫特3,八月间,在2017年测试

“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 
    } 
} 

输出:

enter image description here

为什么扩展方法是什么?

创建一个Swift文件,并将具有Extention方法的以下代码添加到“UILabel”类中,其中此方法是用户定义的,但可用于应用程序中的所有标签,并有助于保持一致性并且干净的代码,如果将来只需要在扩展方法中更改任何样式。

0

你已经给出了角落无线电和标签的边界。它会在迅速4和3

MyLable.layer.masksToBounds = true 
MyLable.layer.cornerRadius = 6 
MyLable.layer.borderWidth = 2 
MyLable.layer.borderColor = UIColor.black.cgColor