我想在用户单击内部时突出显示文本字段的四边边框,并在用户编辑结束时返回。为此,我在文本字段的editDidBegin函数中包含以下代码段。
func pulseBorderColor() {
let pulseAnimation = CABasicAnimation(keyPath: "borderColor")
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor.green.cgColor
pulseAnimation.toValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).cgColor
pulseAnimation.fillMode = kCAFillModeForwards
pulseAnimation.isRemovedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
nationalIdentityTextField.layer.sublayers![0].add(pulseAnimation,forKey: nil)
}
要恢复我的文本字段颜色,我在文本字段editingDidEnd函数内部有以下代码
func reversePulseBorderColor() {
let pulseAnimation = CABasicAnimation(keyPath: "borderColor")
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).cgColor
pulseAnimation.toValue = UIColor.green.cgColor
pulseAnimation.fillMode = kCAFillModeForwards
pulseAnimation.isRemovedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
nationalIdentityTextField.layer.sublayers![0].add(pulseAnimation,forKey: nil)
}
但是,它无法实现我想要的。可能是什么原因,我该如何解决?
答案 0 :(得分:0)
我认为您应该将result = defaultdict(list)
for d in list_of_dicts:
for k, v in d.items():
result[k].append(v)
设置为相关文本字段的层,而不是keyPath
并且还需要将CABasicAnimation
设置为至少1才能使颜色可见。
这是我尝试修改上面的代码并使之正常工作的地方
borderWidth
要设置borderWidth,您可以通过在这样的代码中设置它来实现
func pulseBorderColor() {
let pulseAnimation = CABasicAnimation(keyPath: nil)
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor.green.cgColor
pulseAnimation.toValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).cgColor
pulseAnimation.fillMode = CAMediaTimingFillMode.forwards
pulseAnimation.isRemovedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
txtInput.layer.add(pulseAnimation, forKey: "borderColor")
}
func reversePulseBorderColor() {
let pulseAnimation = CABasicAnimation(keyPath: nil)
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).cgColor
pulseAnimation.toValue = UIColor.green.cgColor
pulseAnimation.fillMode = CAMediaTimingFillMode.forwards
pulseAnimation.isRemovedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
txtInput.layer.add(pulseAnimation, forKey: "borderColor")
}
或身份检查器中的“用户定义的运行时属性”。
希望这会有所帮助。