带有 RECurtainViewController 的 UINavigationBar 外观

Posted

技术标签:

【中文标题】带有 RECurtainViewController 的 UINavigationBar 外观【英文标题】:UINavigationBar appearance with RECurtainViewController 【发布时间】:2013-01-17 18:36:09 【问题描述】:

我正在使用RECurtainViewController 在新的视图控制器中进行转换。在我的应用委托中,我设置了导航栏外观:

[[UINavigationBar appearance] setTitleTextAttributes: @
                                UITextAttributeTextColor: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
                          UITextAttributeTextShadowColor: [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
                         UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                     UITextAttributeFont: [UIFont fontWithName:@"Helvetica" size:20.0f]
     ];

带有导航栏的根视图控制器正确显示。但是,当我使用以下方法引入新的视图控制器时:

DemoViewController *test = [[DemoViewController alloc] init];
[self curtainRevealViewController:test
                  transitionStyle:RECurtainTransitionHorizontal];

UINavigationBar 外观设置回其默认值。任何想法如何使自定义外观持续存在?

编辑:

我注意到,当显示 DemoViewController 时,我也在控制台中收到此警告:

Warning: Attempt to present <DemoViewController: 0x1ddaae70> on <ViewController: 0x1e892040> whose view is not in the window hierarchy!

但是,它仍然显示视图控制器。

【问题讨论】:

测试是否包含在导航控制器中?在上面的代码中,它看起来像是直接添加的。 是的,你是对的。它只是直接添加。 UINavigationBar 外观是否需要在导航控制器中才能正常工作? 我想知道它是如何显示导航栏的,因为您直接添加它。理想情况下,它应该位于导航控制器内,以便在其中显示导航栏。 我只是将 UINavigationBar 添加到我的视图控制器笔尖。它适用于根视图控制器(导航栏外观)。是过渡搞砸了,我不知道哪里出了问题。 尝试创建一个UINavitaionController,并将test 作为它的rootViewController。然后将这个navigationController 对象传递给curtainRevealViewController 方法并检查。不要添加单独的导航栏。 【参考方案1】:

我最终通过进入 DemoViewController 中的 viewDidLoad 方法并将属性分配给实际的 navBar 实例来解决这个问题:

[self.navBar setTitleTextAttributes: @
                                UITextAttributeTextColor: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
                          UITextAttributeTextShadowColor: [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
                         UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                     UITextAttributeFont: [UIFont fontWithName:@"Helvetica" size:20.0f]
     ];

不知道为什么我必须这样做,但它似乎有效。

【讨论】:

以上是关于带有 RECurtainViewController 的 UINavigationBar 外观的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢

访问控制允许带有和不带有 www 的来源