代码之家  ›  专栏  ›  技术社区  ›  Andy Obusek

在iOS 10上模拟调整内容集?

  •  2
  • Andy Obusek  · 技术社区  · 6 年前

    我想修改一个 tableView 的单元格的子视图来自 scrollViewDidScroll(_:) 通过测量 contentOffset . 这个 内容偏移量 似乎第一次跳到非零值 滚动视图滚动(?) 被调用。

    对于一个 UITableView 在内部 UINavigationController , adjustedContentInset 在iOS 11上,正确地允许我计算 内容偏移量 当滚动 表格视图 .

    例如,如果我滚动 表格视图 ,我可以计算像这样滚动的精确数量:

    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        var adjustedTopInset: CGFloat = 0.0
        if #available(iOS 11.0, *) {
            adjustedTopInset = scrollView.adjustedContentInset.top
        }
        let deltaY = scrollView.contentOffset.y - adjustedTopInset
    }
    

    问题是,作为 调整内容集 只在iOS 11上可用,如何计算iOS 10上相同的相对滚动量?

    viewDidLoad() 这个 内容偏移量 表格视图 CGPointZero 但是第一次 滚动视图滚动(?) 被称为 contentOffset.y 跳转到导航栏和状态栏的高度值。在iOS 11上 调整内容集 有助于提供这种高度。

    如何在iOS 10上计算?

    1 回复  |  直到 6 年前
        1
  •  2
  •   matt    6 年前

    听起来好像这是一个“X-Y”问题。你还没有解释你真正想做什么,但是提到 viewDidLoad 建议您尝试在 视图加载 以便日后了解该测量值有多大变化。但你不能测量 任何东西 在里面 视图加载 太早了。将测量推迟到第一次呼叫 viewDidAppear 然后你会得到一个正确的起始值。