UITableViewWrapperView- und UITableView-Größe unterscheiden sich mit Autolayout
Ich baue einen Chat auf. Alles scheint ganz in Ordnung zu sein, aber ich bin auf eine Art 'Buggy'-Problem gestoßen.
Ich habe UIViewController mit UITextView-Leiste zur Eingabe von Nachrichten und UITableView. Sie sind in dieser Einschränkung:"V:|-(64)-[chatTable][sendMessageBar]-(keyboard)-|"
. Wenn die Tastatur nicht ausgeht, lautet die Konstante dieser Einschränkung0
. und nachdem die Tastatur ausgefallen ist, erhöhe ich die Konstante auf die Tastaturhöhe.
wenn die Tastatur nicht aus ist:
self.table.contentSize = (375.0,78.5)
self.table.bounds = (0.0,-490.0,375.0,568.5)
self.table.frame = (0.0,64.0,375.0,568.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,568.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,568.5)
und wenn die Tastatur herauskommt:
self.table.contentSize = (375.0,78.5)
self.table.bounds = (0.0,-274.0,375.0,352.5
self.table.frame = (0.0,64.0,375.0,352.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,-137.5,375.0,137.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,137.5)
So unterscheidet sich die UITableViewWrapperView nach dem Erhöhen der Constraints-Konstante in der Größe von der Übersicht - UITableView. Gibt es eine Möglichkeit, dies zu beheben? Ich würde davon ausgehen, dassUITableViewWrapperView
würde seinen Rahmen und seine Grenzen entsprechend @ ändeUITableView
tut es aber nicht.
Irgendwelche Ideen wo ist das Problem oder wie könnte ich das umgehen?
ADDING:
Nach einigen Nachforschungen - es scheint, dass es irgendwo zwischen @ passieviewWillLayoutSubviews
undviewDidLayoutSubviews
. Es ist irgendwie komisch, wenn:
override func viewWillLayoutSubviews() {
println("WrapperView Frame :991: \(self.table.subviews[0].frame)") \\ WrapperView Frame :991: (0.0,0.0,375.0,568.5)
super.viewWillLayoutSubviews()
println("WrapperView Frame :992: \(self.table.subviews[0].frame)") \\ WrapperView Frame :992: (0.0,0.0,375.0,568.5)
}
override func viewDidLayoutSubviews() {
println("WrapperView Frame :6: \(self.table.subviews[0].frame)") \\ WrapperView Frame :6: (0.0,-137.5,375.0,137.5)
super.viewDidLayoutSubviews()
println(">> viewDidLayoutSubviews")
}
So scheint es, dass dort etwas passiert, das das @ durcheinander brinUITableViewWrapperView