ios - 如何使用自定义 header 或 UINavigationBar 子类化 UINavigationController?

标签 ios swift uiview uiviewcontroller uinavigationcontroller

我想将 UINavigationController 子类化以包含几种类型的 header ,这些 header 可以从一种转换到另一种。我正在考虑设计中的一些事情:

  1. 我应该如何管理子 Controller View 的大小?将它们限制在每种 header 的底部似乎很笨拙,并且在转换期间难以管理。
  2. 我尝试在 loadView() 中将 UIView 子类分配给 UINavigationController 的 View ,但这样做会导致子 Controller View 不显示(而是显示为黑色)。为什么会发生这种意外行为?
  3. 如何支持 UINavigationController 的“从左向右拖动”过渡?
  4. 有没有办法通过子类化 UINavigationBar 来实现这一点?如果不是,我的自定义 View 如何支持 UINavigationController 的过渡动画?
  5. 将 UIViewController 子类化并编写我自己的基本 UINavigationController 行为的实现是否有任何优势?

Header 1

Header 2

最佳答案

我明白仅使用这些方法是不够的:

func setBackgroundImage(UIImage?, for: UIBarMetrics) 并将任何 View 设置为 titleView 以在标题区域插入一个 View 。

也没有将导航栏设置为透明,只有 barbuttonstitleview 显示在 subview 上。

检查 UINavigationBarUINavigationItem文档

关于ios - 如何使用自定义 header 或 UINavigationBar 子类化 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300653/

相关文章:

uiview - 无法访问 UIPanGestureRecognizer 中的对象

ios - 使用textkit时NSTextAttachment覆盖文本

ios - iCloud + Core Data - 如何避免预填充数据重复?

ios - 工具栏项目未以 xamarin 形式显示

使用泛型从 Swift 到 Kotlin : Protocol to Interface,

ios - 转到不同的 View Controller 后动画停止

swift - 在 Swift 中按键分组字典

ios - 从其他 ViewController 中删除带有标签的 View

ios - UICollectionView:重新加载数据,而不删除单元内动画

swift - @3x 设备上的 UIView 帧不正确