【发布时间】:2018-09-22 21:58:40
【问题描述】:
当用户开始键入时,我试图通过设置右布局约束的动画来扩展我的消息文本字段。文本字段确实会扩展,但是它会从中心双向扩展,这不是预期的效果,因为我只更新一个约束,为什么另一个会改变?
func animateTextField(textfield : UITextField, constraint : NSLayoutConstraint) {
let isTextFieldExpanded = constraint.constant == 15
constraint.constant = isTextFieldExpanded ? 59 : 15
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseInOut, animations: {
textfield.layoutIfNeeded()
textfield.translatesAutoresizingMaskIntoConstraints = false
})
}
对于更多上下文,我在同一个视图模型中调用该方法,然后从我的视图控制器中调用该方法。
func handleTypingAnimation(view : UIView, textField : UITextField, constraint : NSLayoutConstraint) {
if textField.text?.isEmpty == false {
animateSendButtonAppear(view: view)
animateTextField(view: view, textfield: textField, constraint: constraint)
}else{
animateSendButtonHide(view: view)
}
}
我的视图控制器
@IBAction func didStartTyping(_ sender: UITextField) {
messageVM.handleTypingAnimation(view: sendButtonView, textField: messageTextField, constraint: textfieldRightConstraint)
}
我的布局约束
@IBOutlet var textfieldRightConstraint: NSLayoutConstraint!
【问题讨论】:
标签: ios swift constraints