UILabel的圆角属性在iOS 7.1中无效。

51

我正在为 UILabel 设置 cornerRadius 属性。在所有 iOS < 7.1 版本上都正常工作。以下是我使用的代码:

UILabel *originaltagLbl = [[UILabel alloc]initWithFrame:CGRectMake(startX, startY, 100,30)];    
[originaltagLbl setFont:[UIFont fontWithName:@"MuseoSans-500" size:15]];
[originaltagLbl setTextAlignment:NSTextAlignmentCenter];
[originaltagLbl setTextColor:UIColorFromRGB(0xffffff)];
originaltagLbl.backgroundColor = [UIColor redColor];
originaltagLbl.layer.cornerRadius = 5;
originaltagLbl.layer.borderColor = [UIColor redColor].CGColor;
originaltagLbl.layer.borderWidth = 1;
[scrollView addSubview:originaltagLbl];

如果我只是简单地使用它,那么标签就会以矩形框的形式显示出来。那么在中如何设置UILabel的圆角半径呢?


4
你确定你的标签有设置 .clipsToBounds 属性为 YES 吗? - Eugene
6个回答

143

在你的代码中添加下一行:

// Swift:
originaltagLbl.layer.masksToBounds = true

// Objective C:
originaltagLbl.layer.masksToBounds = YES;

获取信息请参阅 SO回答,或阅读文档


有趣。这个可以用,但是为什么会改变呢?我以前从来没有在UILabel上使用layer.masksToBounds来设置cornerRadius。 - Andrew Robinson
@AndrewRobinson 我在回答中添加了一些解释它如何工作的来源。 - iOS Dev
1
我理解它的工作原理,但我想知道它何时/为什么发生了变化。我一直在使用cornerRadius来处理UILabel,从未使用过masksToBounds。 - Andrew Robinson
非常感谢您提供这个。我已经寻找了很长时间。 - phyzalis

9

Swift 3/4/5

    yourlabel.layer.cornerRadius = 8 //your desire radius
    yourlabel.layer.masksToBounds = true

2
尝试将UILabel的clipsToBounds属性设置为YES。

1

1

Swift 2 解决方案:

@IBOutlet weak var your_label: UILabel!

your_label.layer.cornerRadius = 5
your_label.layer.masksToBounds = true


0

您可以使用以下代码:

[[myLabel layer] setCornerRadius:5.0f];
[[myLabel layer] setMasksToBounds:YES];

谢谢,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接