为啥我的渐变层比我应用它的 UITextField 小?
Posted
技术标签:
【中文标题】为啥我的渐变层比我应用它的 UITextField 小?【英文标题】:Why is my Gradient Layer smaller than the UITextField I am applying it to?为什么我的渐变层比我应用它的 UITextField 小? 【发布时间】:2018-07-11 14:27:44 【问题描述】:我正在尝试为我的文本字段提供渐变背景。我正在使用以下代码:
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 内部高几个像素,而不是全部覆盖。我能做什么?
【问题讨论】:
【参考方案1】:将代码移动到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
【讨论】:
它就像一个魅力。我不能给你投票,因为我的代表不到 15。我肯定会竖起大拇指。为什么会发生这种情况? 在didMoveToWindow
内部,您没有获得分配给渐变框架的文本字段的正确边界尝试在两种方法中打印它们,您会注意到,还有一次,因为@987654324 @ 被多次调用以上是关于为啥我的渐变层比我应用它的 UITextField 小?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的由代码创建的 UITextField 不能在我的 tableview Cell 中工作?