iOS - 获取单元格内的导航栏高度 class

iOS - get the navigation bar height inside a cell class

我正在实现一些 UICollectionViewCell classes 来填充嵌入 NavigationController 中的普通 UICollectionView。

在这个单元格 class 中,我需要获取将显示此单元格的 collectionView 的 navigationController 的 NavigationBar 高度。

我的问题是我需要在单元格创建过程中预先获取这些数据,而不是之后。

如果是在我简单地将单元格放入 cellForItemAt 并在那里填充一些 属性 之后,但我需要提前完成。

解决这个问题的最佳方法是什么?

这与常规的 tableViewCell 相同 您将如何访问单元格 class 内的 NavigationController.navigationBar 高度?

我知道大部分高度是 44,但我不想强制使用这个值,因为它可能会因设备而异,如果我访问那个 属性,该值将始终正确无误。

这不是 navigationController.navigationBar.frame.height 的常规调用,因为单元格内 class 没有导航控制器

感谢您的帮助。

在您的单元格中使用此代码获取 UIViewController:

extension UIView
{
    func viewController() -> UIViewController? {
        var responder : UIResponder? = self
        while let r = responder {
            if r.isKind(of: UIView.self) {
                responder = r.next
            } else {
                break
            }
        }
        return responder as? UIViewController
    }
}

然后,您可以按预期调用 viewController.navigationController.navigationBar.frame.height