2017-06-21 69 views
0

我有一个UITextField(searchField)在我的viewcontroller的中心,我正在通过使用UIView(liveView)创建一条细线。我以编程方式创建lineView及其约束。 lineView本质上是一个下划线,随着用户的输入,该下划线在textField下宽度增长。一旦用户按下回车键,我正在调整约束,以便文本框和视图移动到视图控制器的顶部。我得到了这个工作,但随着lineView向上移动,它开始淡出并消失。不知道为什么会发生这种情况。UIView在调整约束和动画后消失

func moveUp(){ 

    verticalConstraint = NSLayoutConstraint(item: lineView!, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: searchField, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 6) 

    lineView!.translatesAutoresizingMaskIntoConstraints = false 

    let xConstraint = NSLayoutConstraint(item: lineView!, attribute: .centerX, relatedBy: .equal, toItem: searchField, attribute: .centerX, multiplier: 1, constant: 0) 

    let widthConstraint = NSLayoutConstraint(item: lineView!, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: (lineView?.frame.size.width)!) 

    view.addConstraints([verticalConstraint!, xConstraint, widthConstraint]) 

    searchBarTopConstraint.constant = 0 

    UIView.animate(withDuration: 2.00, delay: 0.0, options: [], animations: { 

     self.view.layoutIfNeeded() 

    }, completion: { (finished: Bool) in 


    }) 

} 

当我检出视图层次结构时,无法找到视图。

回答

0

经过大量调试之后,我决定增加视图的大小以更好地了解发生了什么。很明显,高度正在缩小。我所要做的就是设置一个高度限制,并且一切正常。

let heightConstraint = NSLayoutConstraint(item: lineView!, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: (lineView?.frame.size.height)!) 
+0

FWIW,我只是将'lineView'的'leading'和'trailing'边缘约束到文本字段的边缘,并约束'lineView'的高度。现在,无论它如何动画,它都将保持与文本字段同步。 – NRitH