【问题标题】:iPad - Popover frame coloriPad - 弹出框颜色
【发布时间】:2011-07-10 16:01:48
【问题描述】:

所以我正在开发一个拆分视图应用程序,但遇到了一个奇怪的 UI 错误。这是我最好的尝试来解释它。如果我以横向模式加载应用程序,根控制器的顶部导航栏是正确的颜色。我在 rootView 的 ViewWillAppear 方法中这样做:

self.rvBar.tintColor = [UIColor colorWithRed:59.0/255
                               green:115.0/255
                    blue:185.0/255
                       alpha:1];

现在,当我旋转设备并通过弹出框显示视图时,弹出框是黑色的。您知道如何将弹出框的颜色更改为相同的蓝色吗?我曾尝试在拆分视图控制器委托的 willHide/ShowViewController 方法中执行此操作,但似乎没有任何效果。

现在是第二部分,当我旋转回横向时,再次调用上面的行,但不是显示蓝条,而是现在是灰色的!有没有人见过这样的拆分视图,如果是这样,需要做些什么来修复它?提前致谢。

【问题讨论】:

  • 你试过在 viewDidAppear 方法中做吗?

标签: objective-c ipad ios uisplitviewcontroller


【解决方案1】:

我在一个基本的 SplitViewController 项目(在 RootViewController 中)上试过这个:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:59.0/255
                                                                        green:115.0/255
                                                                         blue:185.0/255
                                                                        alpha:1];
}

而且效果很好。当您说弹出框保持黑色时,您的意思是标题背景是黑色的? (对我来说它是蓝色的,弹出框的边框是黑色的)。

也许问题来自其他地方,你如何设置你的 rvBar 属性?

【讨论】:

  • 是的,标题背景保持黑色。我知道您无法更改弹出框的颜色,但是一旦您将导航栏旋转回来,为什么它将导航栏更改为灰色是没有意义的。我正在从 IB 设置 rvBar 属性。这很奇怪,因为它在视图加载时起作用,但是一旦弹出窗口显示并旋转回来,它就会变成灰色......
  • 您是否尝试过直接在 IB 中而不是通过编程方式设置导航栏色调颜色。我无法重现该错误。
  • splitview控制器的设置方式,由于某种原因无法更改。没有选择这样做。很烦人……
  • 在 XIB 文件中没有您的 SplitViewController 吗?当您使用 SplitViewController 启动项目时,您将获得以下配置:default config screenshot
【解决方案2】:

如果有人仍然想知道,我已经找到了解决这个问题的方法。

在做了一些挖掘之后,我发现有一个 Apple 错误会禁用 UIToolBar tintColor 属性的修改,并且它会卡在它所处的任何状态。我必须向 tintColor 属性发送一条消息才能告诉它是可修改的。

extern id objc_msgSend (id, SEL, BOOL);
objc_msgSend([(UINavigationController *)aViewController navigationBar], @selector(_setDisableCustomTint:), NO);
/* Set the tintColor again */
[(UINavigationController *)aViewController navigationBar].tintColor = [UIColor colorWithRed:59.0/255
                                                                                      green:115.0/255
                                                                                       blue:185.0/255
                                                                                      alpha:1];

如果您打算将应用程序提交到 Apple 商店,这显然是不可接受的,但就我而言,这起到了作用。希望这对你们中的一些人有所帮助......

【讨论】:

  • 这是一个解决方案,但正如你所说,它不适合 appStore - 因此无关紧要。
  • 随便你说什么。出于我的目的,我们有一个不被公众使用的应用程序,因此它是相关的。对于任何因此需要解决方案的人。
  • 很好,我删除了向下箭头 ;)
【解决方案3】:

您无法更改PopovertintColor,该属性不存在。

有关 Popover 的更多信息,请查看UIPopoverController Class Reference

【讨论】:

  • 好吧,我认为情况就是这样。但这仍然不能解释为什么一旦按钮无效并且视图重新出现在左窗格中,它会将栏更改为灰色...
【解决方案4】:

您还可以通过 Interface Builder 更改(根视图控制器的)导航栏;只需从左侧列表中选择导航栏,然后通过从 rgb 矩阵或您选择的任何其他方式中选择来更改 tint 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2011-10-26
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2015-01-01
    • 2013-08-23
    相关资源
    最近更新 更多