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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage