Ich baue einen Chat. Alles scheint ganz in Ordnung zu sein, aber ich bin auf ein Problem gestoßen.UITableViewWrapperView und UITableView Größe unterscheidet sich mit Autolayout
Ich habe UIViewController mit UITextView Leiste für die Eingabe von Nachrichten und UITableView. Sie sind in dieser Einschränkung: "V:|-(64)-[chatTable][sendMessageBar]-(keyboard)-|"
. Wenn die Tastatur nicht aus ist - die Konstante dieser Einschränkung ist 0
. und nachdem die Tastatur aus ist - ich erhöhe die Konstante auf 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 ist die UITableViewWrapperView, nachdem ich Zwänge konstant erhöhen, unterscheidet sich seine Superview in der Größe - UITableView . Gibt es eine Möglichkeit, das zu beheben? Ich würde annehmen, dass UITableViewWrapperView
seinen Rahmen und Grenzen gemäß UITableView
ändern würde, aber es nicht tut.
Irgendwelche Ideen wo ist das Problem oder wie könnte ich es umgehen?
ADDING:
Nach einigen mehr Forschung - es scheint, dass es irgendwo zwischen viewWillLayoutSubviews
und viewDidLayoutSubviews
passiert. Es ist irgendwie komisch tho:
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 vermasselt die UITableViewWrapperView
Ist das nicht eine der verbotenen APIs von Apple? (UITableViewWrapperView) –
Ist das verboten oder nicht? Ich muss es benutzen. aber Angst. – anamika41