如何让Swil中的UILabel成为一个圆圈

时间:2016-03-16 12:45:04

标签: ios swift

我试图让Swift中的UILabel成为一个完美的圆圈,我目前正在使用以下内容:

pResult.layer.masksToBounds = true
        pResult.layer.cornerRadius = 125

问题在于它在6s Plus上工作正常,但任何其他尺寸当然都是不同的形状 - 最好的方法是什么?

7 个答案:

答案 0 :(得分:20)

圆角或整圆?无论如何,假设您需要第二个选项,您应该在故事板上将宽高比(宽度:高度)约束为1:1,因此标签始终为正方形。然后,在代码中,您可以执行类似

的操作
pResult.layer.cornerRadius = pResult.frame.width/2

总是让它成为一个完美的圆圈,无论它的屏幕尺寸如何。

答案 1 :(得分:7)

如果您想制作完美的圆形,请先确保标签的宽度和高度相同。

pResult.layer.cornerRadius = CGRectGetWidth(pResult.frame)/2
pResult.layer.masksToBounds = true

Reference

答案 2 :(得分:4)

如果你使用的是swift 3,请试试这个:

lblRoundDot.layer.cornerRadius = lblRoundDot.frame.width/2
lblRoundDot.layer.masksToBounds = true

答案 3 :(得分:0)

//You can provide UserdefiendRunTimeConstraints on the Label using Storyboard or XIB  Select label and give 

(例如你的标签宽度= 100&高度= 100)

 KeyPath =layer.cornerRadius
 Type = Number
 Value = 50

 KeyPath = layer.masksToBounds
 Type = Boolean
 Value = True

 KeyPath = layer.borderWidth
 Type = Number
 Value = 2

答案 4 :(得分:0)

依靠@FruitAddict的答案,我想更完美地改进它。您应该使用.height属性而不是.width原因如果标签的长度更长(文本增加),此代码将无法正常工作。代码将是这样的:

pResult.layer.cornerRadius = pResult.frame.height / 2

答案 5 :(得分:0)

基于上一个答案,但这是Swift 4.2中的答案:

    label.layer.cornerRadius =  label.frame.width/2
    label.layer.masksToBounds = true

答案 6 :(得分:0)

创建UILabel扩展

extension UILabel {
    func addBadge(badgeCount: String) {
       self.text = badgeCount
        self.textColor = UIColor.white
        self.textAlignment = .center
        self.font = UIFont.systemFont(ofSize: 14.0)
       self.layer.cornerRadius = 0.5 * self.bounds.size.width
        self.layer.backgroundColor = UIColor.orange.cgColor
       
    }