我试图让Swift中的UILabel成为一个完美的圆圈,我目前正在使用以下内容:
pResult.layer.masksToBounds = true
pResult.layer.cornerRadius = 125
问题在于它在6s Plus上工作正常,但任何其他尺寸当然都是不同的形状 - 最好的方法是什么?
答案 0 :(得分:20)
圆角或整圆?无论如何,假设您需要第二个选项,您应该在故事板上将宽高比(宽度:高度)约束为1:1,因此标签始终为正方形。然后,在代码中,您可以执行类似
的操作pResult.layer.cornerRadius = pResult.frame.width/2
总是让它成为一个完美的圆圈,无论它的屏幕尺寸如何。
答案 1 :(得分:7)
如果您想制作完美的圆形,请先确保标签的宽度和高度相同。
pResult.layer.cornerRadius = CGRectGetWidth(pResult.frame)/2
pResult.layer.masksToBounds = true
答案 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
}