ios - UIButton Gradient View 上未显示标题
问题描述
我的 UIButton 附加了一个渐变类,渐变显示效果很好。但是,没有显示 UIButton 的标题或文本。似乎渐变覆盖了文本。这是我的代码:
@IBDesignable
class GradientView: UIButton {
@IBInspectable var topColor: UIColor = #colorLiteral(red: 1, green: 0.0318463631, blue: 0, alpha: 1) {
didSet {
self.setNeedsLayout()
}
}
@IBInspectable var bottomColor: UIColor = #colorLiteral(red: 1, green: 0.4265971184, blue: 0, alpha: 1) {
didSet {
self.setNeedsLayout()
}
}
override func layoutSubviews() {
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [topColor.cgColor, bottomColor.cgColor]
gradientLayer.startPoint = CGPoint(x: 0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1, y: 0.5)
gradientLayer.frame = self.bounds
gradientLayer.cornerRadius = layer.cornerRadius
self.layer.insertSublayer(gradientLayer, at: 0)
}
//Rounded Button Functions
@IBInspectable var cornerRadius : CGFloat = 3.0 {
didSet {
self.layer.cornerRadius = cornerRadius
}
}
override func awakeFromNib() {
self.setupView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
self.setupView()
}
func setupView() {
self.layer.cornerRadius = cornerRadius
}
@IBInspectable var border : CGFloat = 1.0 {
didSet {
self.layer.borderWidth = border
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(cgColor: layer.borderColor!)
}
set {
layer.borderColor = newValue?.cgColor
}
}
}
我不知道问题是什么。我将此代码用于另一个项目,它显示得很好。谢谢
解决方案
你忘记打电话super.layoutSubviews()
了layoutSubviews()
。
override func layoutSubviews() {
super.layoutSubviews()
// your code
}
推荐阅读
- django - 如何在 Django Channels 中为两个不同的消费者使用相同的连接?
- c - 带空指针的算术
- azure-devops - 如何配置计划以在 Azure 上的两个不同代理上运行管道?
- node.js - [ERR_MODULE_NOT_FOUND]:找不到模块
- c# - 如何知道服务总线触发功能是否成功完成?
- reactjs - 反应,返回通用组件
- javascript - 未找到 REACT 模块:无法解析 '../http-common'
- javascript - Javascript Object.getOwnPropertyNames 返回空?
- javascript - 如何从完整路径中获取文件名并存储在 Javascript 中的对象属性中?
- java - 使用 spring-cloud-gateway 时考虑 @RequestBody 参数