gpt4 book ai didi

ios - UITableViewWrapperView 和 UITableView 大小与自动布局不同

转载 作者:IT王子 更新时间:2023-10-29 05:14:56 25 4
gpt4 key购买 nike

我正在建立一个聊天室。一切似乎都很好,但我遇到了某种“错误”问题。

我得到了带有用于输入消息的 UITextView 栏和 UITableView 的 UIViewController。它们处于此约束中:"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 的大小与其父 View - UITableView 不同。有没有办法来解决这个问题 ?我假设 UITableViewWrapperView 会根据 UITableView 更改其框架和边界,但事实并非如此。

有什么想法是哪里出了问题,或者我该如何解决?

添加:

经过更多研究 - 它似乎发生在 viewWillLayoutSubviewsviewDidLayoutSubviews 之间。这有点奇怪:

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

最佳答案

以下为我修复了它:

func fixTableViewInsets() {
let zContentInsets = UIEdgeInsetsZero
tableView.contentInset = zContentInsets
tableView.scrollIndicatorInsets = zContentInsets
}

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
fixTableViewInsets()
}

我发现在 viewWillAppear() 中 insets 都是 0。但是在 viewDidAppear() 中,它们被修改为明显偏移导航栏等。这使得 UITableViewWrapperView 与 UITableView 不同。我更改了它自己的例程中的插图,以便更容易地尝试从不同的地方调用它。 viewWillLayoutSubviews() 让它在呈现之前进行更改 - 将更改放在 viewDidAppear() 中会导致表格摇晃。

关于ios - UITableViewWrapperView 和 UITableView 大小与自动布局不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com