带有圆角和阴影的UILabel

4
我正在寻找一种方法来显示带有layer.cornerRadiuslayer.shadowUILabel
我发现,使用label.clipsToBounds = true可以设置cornerRadius,而使用label.masksToBounds = false则可以显示阴影。
使用两者时,只会显示阴影,而没有圆角。
let label = UILabel()
label.textAlignment = .center
label.font = UIFont.systemFont(ofSize: 32, weight: .regular)
label.textColor = .white
label.clipsToBounds = true
label.backgroundColor = Colors.Vibrants.softBlue
label.layer.cornerRadius = 50
label.layer.masksToBounds = false
label.layer.shadowColor = UIColor.black.cgColor
label.layer.shadowOffset = CGSize(width: 5, height: 5)
label.layer.shadowRadius = 5
label.layer.shadowOpacity = 0.7
label.text = "0"

有谁能解决这个问题,以便同时显示cornerRadiusshadow


label label = UILabel() 还是 let label = UILabel() - Wings
1
可能是重复的问题 Swift - 关于圆角和投影阴影的问题 - dahiya_boy
@1 抱歉,是的,我复制错了 :/ - rocklyve
1
你在哪里设置它的框架? - Emre Önder
@EmreÖnder 我尝试在设置框架后立即设置半径,但它没有起作用。你有解决办法吗? - gutte
请您尝试在layoutSubviews中进行。 - Emre Önder
3个回答

2
    label.layer.borderWidth = 0.2
    label.layer.borderColor = UIColor.clear.cgColor
    label.layer.shadowColor = UIColor.gray.cgColor
    label.layer.shadowOffset = CGSize(width: CGFloat(1.0), height: CGFloat(2.0))
    label.layer.shadowRadius = 1
    label.layer.shadowOpacity = 0.8
    label.layer.cornerRadius = 5.0
    label.layer.masksToBounds = false

2
为什么不尝试为标签添加一个父级UIView,该视图将包含背景颜色和圆角半径。然后将阴影属性保留到标签中。"最初的回答"

0
class setShadowOnLabel: UILabel
{
    override func layoutSubviews()
    {
        self.layer.cornerRadius = 5
        self.layer.shadowColor = UIColor.lightGray.cgColor
        self.layer.shadowOffset = CGSize(width: 0.0, height: 0.2)
        self.layer.shadowOpacity = 0.80
        self.layer.shadowRadius = 5.0
        self.layer.masksToBounds = false
    }
}

然后直接将setShadowOnLabel类分配给Label。在此输入图片描述

enter image description here


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