Ich habe eine UITextField
(searchField) in der Mitte meiner Viewcontroller und ich erstellen eine dünne Linie mit UIView
(LiveView). Ich erstelle die Zeilenansicht und ihre Einschränkungen programmgesteuert. Die Zeilenansicht ist im Wesentlichen eine Unterstreichung, die in der Breite unterhalb des Textfelds wächst, während der Benutzer tippt. Sobald der Benutzer die Eingabetaste drückt, passe ich die Einschränkungen an, sodass das Textfeld und die Ansicht an den Anfang des Viewcontrollers verschoben werden. Ich habe das funktioniert, aber als die LineView nach oben bewegt, beginnt es zu verblassen und verschwindet. Keine Ahnung, warum das passiert.UIView verschwindet nach dem Anpassen der Abhängigkeit und animieren
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
})
}
Wenn ich die Ansichtshierarchie auschecke, ist die Ansicht nirgendwo zu finden.
FWIW, ich würde nur die "führenden" und "abschließenden" Kanten des 'lineView' an die Kanten des Textfelds beschränken und die Höhe des' lineView' einschränken. Jetzt bleibt es synchron zum Textfeld, egal wie animiert es ist. – NRitH