UILabel Layer.CornerRadius在IOS 7.1中无法正常工作

我最近在一个安装了iOS7.0的设备上看到了一个带有属性addMessageLabel.layer.cornerRadius = 5.0f;的UILabel,它有圆角。在安装了IOS 7.1的设备上,它没有圆角。

这只是IOS 7.1的一个bug吗?

83193 次浏览

Try the followings,

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


//or
[addMessageLabel setClipsToBounds:YES];

Swift

addMessageLable.layer.cornerRadius = 5.0
addMessageLable.layer.masksToBounds = true


//or
addMessageLable.layer.clipsToBounds = true

Set the property clipsToBounds to true

addMessageLabel.clipsToBounds = true

I think the best way to set corner radius is:

enter image description here

and be sure the "Clip Subviews" is checked:

enter image description here

Checking "Clip Subviews" is equal to the code addMessageLabel.clipsToBounds = YES;.

I have tried the below one and i got an successful output.

yourlabelname.layer.cornerRadius = 10.0f;
[yourlabelname setClipsToBounds:YES];

Is there something else which is stopping you?

 //works perfect in Swift 2.0 for a circular or round image




@IBOutlet var theImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//Make sure the width and height are same
self.theImage.layer.cornerRadius = self.theImage.frame.size.width / 2
self.theImage.layer.borderWidth = 2.0
self.theImage.layer.borderColor = UIColor.whiteColor().CGColor
self.theImage.clipsToBounds = true


}
yourlabelname.layer.cornerRadius = yourlabelname.frame.size.width/2;
[yourlabelname setClipsToBounds:YES];

Make sure you are checking with appropriate Deployment target.

My issue was a bit different.

While I did do btn.clipsToBounds = true

I wasn't setting doing:

btn.layer.cornerRadius = 20

Because I had different screen sizes. Instead I followed this answer and did:

override func layoutSubviews() {
seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

It wasn't working because I forgot to add super.layoutSubviews(). The correct code is:

override func layoutSubviews() {
super.layoutSubviews()
seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

Add the Following Code as extension for UIView

//// Story board Extra Feature for create border radius, border width and border Color
extension UIView {
/// corner radius
@IBInspectable var borderColor: UIColor? {
set {
layer.borderColor = newValue!.cgColor
}
get {
if let color = layer.borderColor {
return UIColor(cgColor: color)
} else {
return nil
}
}
}
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat {
set {
layer.cornerRadius = newValue
clipsToBounds = newValue > 0
}
get {
return layer.cornerRadius
}
}
}

After that you will get the following attributes in interface builder itself.!

enter image description here