我有两个视图控制器,其中一个是UICollectionViewController
,另一个是UITableViewController
。当我运行应用程序并检查调试视图的层次结构时,集合视图的框架与预期的一样是原点(0,0),但表视图的原点是(0,-44)。
我认为问题是:
我认为这是因为自动调整大小,因为在viewDidLoad()
中打印tableView的边界表明tableView的原点为(0,0),但是在viewDidLayoutSubviews()
中打印tableView的边界显示原点为( 0,-44)。
为什么会出现这个问题:我添加了一个UIView
作为view
的子视图,并尝试调整tableView的大小以使其在底部上方一定的恒定高度处结束屏幕上的UIView
占据了屏幕底部的剩余空间。这在UICollectionViewController
中可以正常使用,其中边界的原点(0,0),但是由于tableView的边界原点的y值为负,因此UIView在屏幕底部被切除。 / p>
我尝试过的操作:我在CGPoint.zero
中将tableView的边界原点设置为viewDidLoad()
,但这没有用,因为在{{1 }}。我将tableView的边界原点设置为viewDidLoad()
,并将大小设置为一个值,该值将在CGPoint.zero
的底部为UIView
留出空间(tableView的大小-UIView的大小),并正确调整了tableView的大小,但由于某种原因导致viewDidLayoutSubviews()
消失。仅调整tableView的原点会导致UIView
正确显示,但是tableView与UIView
重叠,我不想这样做。
另外,由于视图非常频繁地布置子视图(例如,滚动tableView时),因此该应用运行UIView
中的代码的频率过高,从而导致滞后。
此外,我希望有人能解释为什么tableView的边界被调整为非viewDIdLayoutSubviews()
值,而collectionView仍为CGPoint.zero
编辑1:
评论中要求提供屏幕截图,所以分别是CGPoint.zero
和正确的UITableViewController
的屏幕截图(我无法正确调整图像的大小,因此希望这足够好):
以下是指向全尺寸图片的链接 UITableViewController和UICollectionViewController。
编辑2:
我还打印了UICollectionViewController
和view
的约束,但它们都没有任何约束。