我正在建立一个聊天一切似乎都很好,但我碰到了一些“错车”的问题.
我有UIViewController与UITextView栏输入消息和UITableView.
他们在这个约束:“V:| – (64) – [chatTable] [sendMessageBar] – (键盘) – |”.
当键盘不出来时,该约束的常数为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,568.5) self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,568.5)
当键盘出来时:
self.table.contentSize = (375.0,-274.0,352.5 self.table.frame = (0.0,352.5) self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,-137.5,137.5) self.table.subviews[0].frame (UITableViewWrapperView) = (0.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,568.5) super.viewWillLayoutSubviews() println("WrapperView Frame :992: \(self.table.subviews[0].frame)") \\ WrapperView Frame :992: (0.0,568.5) } override func viewDidLayoutSubviews() { println("WrapperView Frame :6: \(self.table.subviews[0].frame)") \\ WrapperView Frame :6: (0.0,137.5) super.viewDidLayoutSubviews() println(">> viewDidLayoutSubviews") }
所以似乎有一些事情会混乱UITableViewWrapperView
解决方法
似乎这是一个错误(与这个bug一起玩了整整一天为我)
最后 this解决方法有帮助:
最后 this解决方法有帮助:
for (UIView *subview in tableView.subviews) { if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewWrapperView"]) { subview.frame = CGRectMake(0,tableView.bounds.size.width,tableView.bounds.size.height); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。