在我的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
中添加混音,然后再次发生一些混乱。屏幕加载TV
在y= -64
巧合(绝对不是巧合)它是Inset
设置为。在任何地方触摸,它会对齐到y= 0
(它应该始终捕捉并开始),然后稍微滚动它就会跳到y= +49
。 TV
似乎有3个点如上所述,但我不知道为什么。 SV
设置为具有滚动方向锁定和分页功能。这是contentOffset
是screen height
(这就是为什么我不明白为什么会导致这些问题)×2 * screen width
。如果我删除了我的手动修补程序inset
,正如预期的那样,问题只是向上移动了64.只有TV
报告相同的高度为0 & -64(无法使其对齐到+49),这是可以理解的不应该将滚动代理中的插值计入y值。
无论如何,所以我绝对不知道为什么我的内的UITableView
正在播放它的程度。我始终觉得UIScrollView
会自动处理它的直接子元素的任何内容插入,包括TableViews
。
如果有人可以对此有所了解,我将不胜感激。
的问候,
迈克
UPDATE:这个问题,因为我已经发现,在于我设置我的contentOffset
在viewDidLayoutSubviews()
我目前做这样的方式:scrollView.contentSize = CGSizeMake(self.view.frame.width * 2 , self.view.frame.height);
。仍然不确定为什么这行代码会导致我遇到的无数问题。
您应该取消插入工作的自动布局。 – Anton
@Anton刚刚禁用了Autolayout,但是当我在更新中提到的代码行出现时,问题仍然存在。 – Mackey18