繁体   English   中英

Swift-UILayoutView中的UITableView内容插入与自动布局不正确

[英]Swift - UITableView in UIScrollView content inset incorrect with Autolayout

在我的UIViewController我有一个UIScrollView ,然后有一个UITableView 即使没有UIScrollView我的行为也很奇怪。 当我的ViewController没有被子类化时,我的UITableViewUITableView )运行良好。 我将VC子类化,然后TV突然在navBar下方滚动。 我所做的没有什么特别的事情,我可以看到会导致这种变化,但是由于这些年来我第一次使用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添加到组合中,事情又变得有些混乱了。 屏幕以y= -64加载TV ,这恰好是它的“ Inset设置的巧合(绝对不是巧合)。 触摸任意位置时,它会捕捉到y= 0 (应该始终捕捉到并开始于此位置),然后通过一点滚动它会捕捉到y= +49 如上所述, TV似乎有3个捕捉点,但我不确定为什么。 SV设置为具有滚动方向锁定和分页功能。 它的contentOffsetscreen height (这就是为什么我不明白为什么会导致这些问题的原因)x 2 * screen width 如果我删除了对inset手动修复, inset预期,问题只会向上移动64。仅TV报告了相同的高度0和-64(无法使其捕捉到+49),这是可以理解的不应在滚动委托中将插入项计入它的y滚动值。

无论如何,所以我绝对不知道为什么我的UIScrollView UITableView会发挥到最大程度。 我总是给人一种印象,即UIScrollView会自动处理其直接子元素(包括TableViews任何内容插图。

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

问候,
麦克风

更新 :此后,我发现的问题在于我在viewDidLayoutSubviews()设置contentOffset的方式,我目前正在这样做: scrollView.contentSize = CGSizeMake(self.view.frame.width * 2 , self.view.frame.height); 仍然不确定为什么仅这行代码会导致我遇到过许多问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM