Размеры UITableViewWrapperView и UITableView отличаются в зависимости от автоматического размещения
Я строю чат. Кажется, все в порядке, но я столкнулся с некоторой «глючной» проблемой.
я получил UIViewController с панелью UITextView для ввода сообщения и UITableView. Они находятся в этом ограничении:"V:|-(64)-[chatTable][sendMessageBar]-(keyboard)-|"
, Когда клавиатура не горит - константа этого ограничения0
, и после того, как клавиатура отсутствует - я увеличиваю константу до высоты клавиатуры.
когда клавиатура не горит:
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)
и когда клавиатура выходит:
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)
Поэтому UITableViewWrapperView после увеличения константы ограничений отличается по размеру от своего суперпредставления - UITableView. Есть ли способ это исправить? Я бы предположил, чтоUITableViewWrapperView
изменит свой кадр и границы в соответствии сUITableView
но это не так.
Любые идеи, где проблема или как я могу обойти это?
ДОБАВЛЕНИЕ:
После еще одного исследования - кажется, что это происходит где-то междуviewWillLayoutSubviews
а такжеviewDidLayoutSubviews
, Это немного странно
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")
}
Так что, похоже, что-то происходит там, что портитUITableViewWrapperView