0

在我的第一个视图中,我在 UINavigationBar 中显示了一个红色标题。我正在使用 UILabel 来实现这一点,因为它是我发现在 iOS 7 中显示红色文本的唯一方法。现在根据用户选择的内容,UIAlertView 会显示在第一个视图上方(因此成为背景视图)。警报视图不覆盖全屏,因此第一个(背景)视图的元素仍然可见。除了 UINavigationBar 标题文本外,它们都是灰色的。为了保持一致性,我希望红色标题在警报视图显示时也变成灰色。

关于那一刻我如何改变颜色的任何想法?

我的 UILabel 代码:

UILabel *titleView = (UILabel *)self.navigationItem.titleView;
titleView = [[UILabel alloc] initWithFrame:CGRectZero];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont boldSystemFontOfSize:20.0];
//titleView.font = [UIFont fontWithName:@"Arial" size:20.0];
titleView.textColor = [UIColor redColor];

self.navigationItem.titleView = titleView;

self.title = @"View Title";

titleView.text = self.title;
[titleView sizeToFit];

我还尝试在不使用 UILabel 的情况下更改 UINavigationBar 标题的颜色,使其从原点的黑色变为红色,但没有成功。UILabel 是我的备份。但是,如果有办法让它在没有 UILabel 的情况下工作,请告诉我。我已经浏览了该站点上的所有相关主题,但没有得到解决。

4

1 回答 1

1
[titleView setTextColor:[UIColor redColor]];

在您显示警报视图立即使用它。

例子:

if (somethingBecameTrue)
{
    [yourAlertView show];
    [titleView setTextColor:[UIColor redColor]];
}

要将其转回:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [titleView setTextColor:[UIColor blackColor]];
}

要检查它是否显示:

if (!yourAlertView.visible) // Note the exclamation mark (!)
{
    // Alertview is not shown yet
    [yourAlertView show];
}
于 2013-11-11T14:59:42.017 回答