UIlabel layer.cornerRadius 在 iOS 7.1 中不起作用

Posted

技术标签:

【中文标题】UIlabel layer.cornerRadius 在 iOS 7.1 中不起作用【英文标题】:UIlabel layer.cornerRadius not working in iOS 7.1 【发布时间】:2014-04-14 12:57:51 【问题描述】:

我目前正在查看属性为 addMessageLabel.layer.cornerRadius = 5.0f; 的 UILabel 在安装了 ios 7.0 的设备上,它有圆角。在安装了 iOS 7.1 的设备上,它没有圆角。

这只是 iOS 7.1 的一个错误吗?

【问题讨论】:

【参考方案1】:

将属性clipsToBounds 设置为true

addMessageLabel.clipsToBounds = true

【讨论】:

不知道为什么您不必在 iOS 7 上执行此操作,而必须在 iOS 7.1 上执行此操作,但它确实有效!谢谢 不,并不奇怪......只是“进步”......,UILabel 的 clipsToBounds 现在似乎像大多数其他 UIViews 一样默认为 FALSE。苹果可能正试图让产品更加一致。我也遇到了同样的问题。 @ChristopherKing 我找不到这方面的文档,但这也适用于我的场景,我猜很惊讶 :) 感谢 Stack Overflow 的开发者。 谢谢哥们,你节省了我的时间(Y)。【参考方案2】:

我认为设置圆角半径的最佳方法是:

并确保选中“剪辑子视图”:

勾选“Clip Subviews”等于代码addMessageLabel.clipsToBounds = YES;

【讨论】:

绝对是最简单的方法 这是最好的方法。使用 ios 8+ 和 xcode 7.2 测试。 如果有人来这里找这个但它没有用:如果你把属性“cornerRadius”放在iOS10+上。在 iOS9 上它必须是“layer.cornerRadius” clipToBounds也可以在User Defined Runtime Attributes中设置(同layer.cornerRadius):应该是key Path: clipsToBounds, type: Boolean, value: true【参考方案3】:

试试下面的,

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

//or
[addMessageLabel setClipsToBounds:YES];

斯威夫特

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

//or
addMessageLable.layer.clipsToBounds = true

【讨论】:

【参考方案4】:

我的问题有点不同。

而我做过 btn.clipsToBounds = true

我没有设置这样做:

btn.layer.cornerRadius = 20

因为我有不同的屏幕尺寸。相反,我跟着this 回答并做了:

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

因为我忘记添加super.layoutSubviews(),所以它不起作用。正确的代码是:

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

【讨论】:

非常感谢......只有这个答案对我有用。斯威夫特 3,Xcode 8.3.3【参考方案5】:

我已经尝试了下面的一个,我得到了一个成功的输出。

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

还有什么阻碍你的吗?

【讨论】:

在 iOS 7.1 之前,clipsToBounds 被默认为YES,所以[yourlabelname setClipsToBounds:YES]; 这行不在我的原始代码中。【参考方案6】:
 //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

        

【讨论】:

【参考方案7】:
yourlabelname.layer.cornerRadius = yourlabelname.frame.size.width/2;
[yourlabelname setClipsToBounds:YES];

确保您正在检查适当的部署目标。

【讨论】:

【参考方案8】:

添加以下代码作为 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
        
    

之后,您将在界面生成器本身中获得以下属性。!

【讨论】:

以上是关于UIlabel layer.cornerRadius 在 iOS 7.1 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如果 uilabel 只有一行,则使用 uiLabel 的第二行

UILabel

UIAlertController 或 UITextField 中的 UILabel 类似 UILabel

UILabel

ios6--UILabel

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?