TableView意外调整边界大小

时间:2019-01-09 15:11:35

标签: swift uitableview bounds

我有两个视图控制器,其中一个是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的屏幕截图(我无法正确调整图像的大小,因此希望这足够好):

enter image description here enter image description here

以下是指向全尺寸图片的链接 UITableViewControllerUICollectionViewController

编辑2:

我还打印了UICollectionViewControllerview的约束,但它们都没有任何约束。

0 个答案:

没有答案