UIAlertView 更改 UITabbar 项目选定的颜色

Posted

技术标签:

【中文标题】UIAlertView 更改 UITabbar 项目选定的颜色【英文标题】:UIAlertView changes UITabbar item selected color 【发布时间】:2014-05-08 07:54:47 【问题描述】:

我的应用程序中有一个奇怪的问题:我有一个UIViewController,当用户点击一个按钮时它会显示一个UIAlertView。该警报让用户在照片库和 iPhone 相机之间进行选择。

当警报出现时,我注意到了这个问题:

首先,UIViewController 选中的标签栏项具有这种布局

然后,当警报出现时,它会变成这样

如果用户决定访问他的照片库,然后它返回,标签栏项目仍然是这样

这怎么可能?也许 UIAlertView 正在改变一些色调?

谢谢

【问题讨论】:

你为标签设置了什么 tintColor?还要检查 selectedImageTintColor @purrrminator 对于标签栏的色调颜色和 selectedImageTintColor 我使用了[[UITabBar appearance] setTintColor:[UIColor colorWithRed:96.0/255.0 green:194.0/255.0 blue:224.0/255.0 alpha:1.0]]; 【参考方案1】:

我也遇到了这个问题,当某些视图在关闭 UIAlertView 后应该恢复正常颜色时,它们有时会保持暗淡。我相信这是 ios 7.0(或可能是 7.1)中的一个错误。我把这个解决方法放在我的AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) 
        self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
    
    return YES;

这首先防止所有视图变暗,从而使您应用中的所有视图都保持变暗。

【讨论】:

完美运行!谢谢! 哦...拐杖。到处都是拐杖 如果您使用自定义 UIView 子类,请确保按照下面的 Andrea’s 建议实现 tintColorDidChange【参考方案2】:

您是否使用自定义 UIView 子类?以下是 Apple 在过渡指南中的说明。

当出现警报或操作表时,iOS 7 会自动调暗 为其后面的视图着色。为了响应这种颜色变化,一个 在其渲染中使用 tintColor 的自定义视图子类应该 覆盖 tintColorDidChange 以在适当的时候刷新渲染。

【讨论】:

【参考方案3】:

我和你有同样的问题,但它发生在 UISlider 中。我解决了我的问题:只需为我的 UISlider 设置颜色。

 progressSlider.maximumTrackTintColor = [UIColor lightGrayColor];

我想你只是为这个标签栏项目设置了颜色

如果您没有为标签栏项目设置颜色,则在显示警报后它将重置为 lightGrayColor

希望对你有帮助

【讨论】:

【参考方案4】:

当我尝试在 viewDidLoad 中显示 UIAlertView 时,同样的事情发生在我身上。我通过在 viewDidAppear 中显示它来解决这个问题。您可以找到样本here https://github.com/Tulakshana/TabBar

【讨论】:

以上是关于UIAlertView 更改 UITabbar 项目选定的颜色的主要内容,如果未能解决你的问题,请参考以下文章

UITabBar项过多时如何自定义出现的UINavigationBar?

解雇后如何以编程方式更改UITabBar选定的索引?

UITabBar 获取选中项

在 UITabbar 项之间插入空格/视图/图像

应用访问地图服务时系统弹出UIAlertView,可以更改UIAlertView的消息吗?

确定 UITabBar 项属于哪个 UIViewController 子类