2014-07-11 27 views
0

在我的UIViewController我有UIScrollView,然后在UITableView里面。即使没有UIScrollView,我也会收到奇怪的行为。当我的ViewController不是子类别时,我的UITableView(自己)表现良好。我将VC和突然之间的TV划分在我的navBar下面。我没有做过特别的事情,我可以看到会导致这种变化,但是由于我在这些年来第一次使用AutoLayout,因此可能会出现我忽略的情况。无论如何,我然后用这个手动解决这个问题:Swift - UITableView在UIScrollView内容插入不正确与Autolayout

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews(); 

    var currentInsets: UIEdgeInsets = tableView.contentInset; 
    println("Inset from top", self.topLayoutGuide.length) 
    self.tableView.contentInset = UIEdgeInsets(top: self.topLayoutGuide.length, left: currentInsets.bottom, bottom: currentInsets.left, right: currentInsets.right); 
} 

一切按预期工作(即使我不应该这样做)。然后我在SV中添加混音,然后再次发生一些混乱。屏幕加载TVy= -64巧合(绝对不是巧合)它是Inset设置为。在任何地方触摸,它会对齐到y= 0(它应该始终捕捉并开始),然后稍微滚动它就会跳到y= +49TV似乎有3个点如上所述,但我不知道为什么。 SV设置为具有滚动方向锁定和分页功能。这是contentOffsetscreen height(这就是为什么我不明白为什么会导致这些问题)×2 * screen width。如果我删除了我的手动修补程序inset,正如预期的那样,问题只是向上移动了64.只有TV报告相同的高度为0 & -64(无法使其对齐到+49),这是可以理解的不应该将滚动代理中的插值计入y值。

无论如何,所以我绝对不知道为什么我的内的UITableView正在播放它的程度。我始终觉得UIScrollView会自动处理它的直接子元素的任何内容插入,包括TableViews

如果有人可以对此有所了解,我将不胜感激。

的问候,
迈克

UPDATE:这个问题,因为我已经发现,在于我设置我的contentOffsetviewDidLayoutSubviews()我目前做这样的方式:scrollView.contentSize = CGSizeMake(self.view.frame.width * 2 , self.view.frame.height);。仍然不确定为什么这行代码会导致我遇到的无数问题。

+0

您应该取消插入工作的自动布局。 – Anton

+0

@Anton刚刚禁用了Autolayout,但是当我在更新中提到的代码行出现时,问题仍然存在。 – Mackey18

回答

1

最后使用UIPageViewController来实现我想要的功能,远比使用UIScrollView更好。

相关问题