gpt4 book ai didi

ios - UIButton 的 layer.cornerRadius 移除按钮标题的可见性

转载 作者:搜寻专家 更新时间:2023-11-01 06:12:57 24 4
gpt4 key购买 nike

我为我的按钮添加了一个自定义类,我在其中设置角半径(为多个 VC 保存一些代码)但是一旦我设置它,我的按钮的标题就会消失。您可以看到我设置了一个按钮标题,在选择自定义类之前它工作正常。

我的按钮的背景是带有 alpha 的灰色。我曾尝试使用 .isOpaque 设置,但没能拿回标题。知道是什么导致了这个问题吗?

@IBDesignable class RoundedButton: UIButton {

@IBInspectable var cornerRadius: CGFloat = 8

override func layoutSubviews() {
layer.cornerRadius = cornerRadius
}
}

Storyboard

编辑:已解决!谢谢你/僵尸的解释!

最佳答案

标题没有显示,因为它的框架没有更新。

要修复布局,您需要调用 super.layoutSubviews

override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = cornerRadius
}

您的方法可能会阻止对变量之外的半径进行任何更新。

这里有一个更好的方法:

@IBDesignable class RoundedButton: UIButton {

private var defaultCornerRadius: CGFloat = 8

@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}

set {
layer.cornerRadius = newValue
}
}

override init(frame: CGRect) {
super.init(frame: frame)

cornerRadius = defaultCornerRadius
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

cornerRadius = aDecoder.decodeObject(forKey: "cornerRadius") as? CGFloat ?? defaultCornerRadius
}



override func encode(with aCoder: NSCoder) {
super.encode(with: aCoder)

aCoder.encode(cornerRadius, forKey: "cornerRadius")
}
}

关于ios - UIButton 的 layer.cornerRadius 移除按钮标题的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com