swift - 为什么我的渐变层比我应用它的 UITextField 小?
问题描述
我正在尝试为我的文本字段提供渐变背景。我正在使用以下代码:
import UIKit
extension UITextField {
func gradientBackground(firstColor: UIColor, secondColor: UIColor){
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds
gradientLayer.colors = [firstColor.cgColor, secondColor.cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x:0.0, y:0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)
layer.addSublayer(gradientLayer)
}
}
class gradientTeLabel: UITextField {
override func didMoveToWindow() {
self.gradientBackground(firstColor: UIColor(red: 0.90, green: 0.61, blue: 0.00, alpha: 1), secondColor: UIColor(red: 0.70, green: 0.61, blue: 0.70, alpha: 1))
}
}
我所做的是创建一个扩展和一个我将附加到一些 UITextFields 的类。结果是渐变层比文本字段短一点,它开始在 texfield 内部高几个像素,而不是全部覆盖。我能做些什么?
解决方案
将代码移动到layoutSubviews
,因为它包含正确的边界
class gradientTeLabel: UITextField {
var once = true
override func layoutSubviews() {
super.layoutSubviews()
if once {
self.gradientBackground(firstColor: UIColor(red: 0.90, green: 0.61, blue: 0.00, alpha: 1), secondColor: UIColor(red: 0.70, green: 0.61, blue: 0.70, alpha: 1))
once = false
}
}
}
推荐阅读
- iis - 从重写中排除 URL
- php - Codeigniter 查询没有给出正确的答案
- java - Android JNI - 加载 dlib 形状预测器文件
- java - Java Keycloak 库在 jar 文件中失败
- mysql - 将数据库(从本地)上传到 MySQL(实时) - 字符集问题
- swift - Swift MFMailComposer 可选标签
- reactjs - 使用 immutability-hepler 更新嵌套数组的最佳方法
- c# - 如何停止 IIS 上的 Hangfire 进程?
- postgresql - 如何在 Ubuntu 18.04 中重启 PostgreSQL
- python - 为什么代码在 Jupyter 中有效而在 Spyder 中无效?