ios - 通过扩展向 UILabel 添加渐变
问题描述
您可能知道,如果您尝试为 UILabel 设置渐变背景,它会覆盖文本。我想为 UILabels 编写一个扩展,以便放置渐变背景。这是我的代码,但渐变放在一个正方形中,向下和向右移动到标签。我不明白为什么,因为我使用的是同一个框架
public extension UILabel {
func applyGradientToLabelAtAngle(_ angle : CGFloat, _ color1 : UIColor, _ color2 : UIColor){
let gradient = CAGradientLayer()
gradient.frame = self.frame
gradient.colors = [color1.cgColor, color2.cgColor]
gradient.calculatePoints(for: angle)
let index = self.layer.superlayer!.sublayers!.firstIndex(of: self.layer)!
self.layer.superlayer!.sublayers!.insert(gradient, at: index)
}
}
编辑:calculatePoints 函数计算位置,对问题不重要
解决方案
信息不足。当我这样称呼你的代码时,你的代码对我来说很好:
let lab = UILabel()
lab.text = "Howdy there"
lab.sizeToFit()
lab.frame.origin = .init(x:100, y:100)
self.view.addSubview(lab)
lab.applyGradientToLabelAtAngle(.pi, .green, .red)
问题显然是你没有这样称呼它。但是你没有说你是怎么称呼它的。我怀疑你在错误的时间调用它,即在最重要的事情self.frame
还不知道的时候。
推荐阅读
- c++ - 冒泡排序后正确打印c ++
- c# - 在 C# 应用程序中获取集群 azure kubernetes 服务 (AKS) 运行状况/可用性
- git - Git合并冲突问题——自动合并失败;修复冲突然后提交结果
- javascript - Safari 中的正则表达式无效
- visual-studio - 我无法通过单击按钮移动我的播放器
- mysql-connector - 使用 Python 向 MYSQL 插入行时出错
- delphi - Delphi Aes 解密函数
- python - 检查值是否存在于其他数据框中的任何位置
- android - android studio还有另一种选择吗
- javascript - 活动菜单突出显示 - 主页仍然集中