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
。
我正在实现一些 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
。