Home Articles

自定义导航和容器视图

Asked
Viewed 197 times
0

我想要什么

一个完全自定义的导航栏,它将持久存在并允许用户通过自定义模态转换进行交互 .

我做了什么

我已经构建了一个父视图控制器,它包含底部的Container视图和顶部的视图(自定义导航栏) . Container View嵌入了一个视图控制器,可以模态地显示其他视图控制器 .

以模态方式呈现的视图控制器使用自定义转换(UIViewControllerTransitioningDelegate)从底部弹出,并且仅占据底部视图控制器的一部分(即使菜单可见) .

当第一个视图控制器以模态方式呈现时,仍然可以与自定义导航菜单进行交互 . 但是,如果第一个模态呈现的视图控制器依次呈现另一个视图控制器,则自定义导航栏不响应用户交互 .

|  NAV BAR  |             
|-----------|             |------------|               |------------|              
| Container |             |   View     |               |    View    |             
|   view    |-> EMBED ->  | Controller |-> Presents -> | Controller |-> Presents ->
|           |             |            |    Modally    |    1st     |    Modally

(续)

|------------|
  |    View    |
->| Controller |
  |     2nd    |

当第一个视图控制器以模态方式呈现时,导航栏仍然响应触摸 . 当呈现第二个(以及该线下的任何其他线(即第3个,第4个......))时,导航栏仍然可见但不响应用户触摸 .

Github上有一个示例项目,说明了我遇到的问题 .

我的问题是什么

无论我以模态方式呈现多少个视图控制器,我都希望能够点击导航栏 .

我应该接近这项工作的方式吗?

完成我想做的最好的方法是什么?是否有标准方法来创建完全自定义的导航栏(即几个按钮,自定义高度等)?

1 Answer

  • 0

    请根据Github项目更改文件CVTFirstViewController.h中第二个视图控制器的模式表示样式 .

    使用此代码

    secondViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
    

    代替

    secondViewController.modalPresentationStyle = UIModalPresentationCustom;
    

Related