UIToolbar 在 ios 5.0 和 ios 6.0 模拟器上显示不同的颜色

Posted

技术标签:

【中文标题】UIToolbar 在 ios 5.0 和 ios 6.0 模拟器上显示不同的颜色【英文标题】:UIToolbar shows different color on ios 5.0 and ios 6.0 Simulators 【发布时间】:2012-12-31 07:23:14 【问题描述】:

我为我的 UIToolBar 设置了 tintcolor。它在 ios 6.0 中正确显示,但在 ios 5.0 模拟器上显示为黑色。我的代码在这里

originalBounds = mysearchBarBarItem.customView.bounds;
mySearchBar.bounds = CGRectMake(0,0,215,44);
myTopToolbar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:NAVIGATION_BAR_BACKGROUND]];
myTopToolbar.barStyle = UIBarStyleDefault;

mySearchBar.barStyle = UIBarStyleDefault;
mySearchBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:NAVIGATION_BAR_BACKGROUND]];

[myTopToolbar setItems:toolBarItemsArray animated:YES];

【问题讨论】:

你在设备中检查过这个吗? 我已经在真正的 iOS 6.0 硬件中检查过了。它显示正确。我没有iOS 5.0真机测试,我测试过iOS 5.0模拟器 【参考方案1】:

我不知道这是否会有所不同,但您可以尝试更改分配条形样式和颜色的顺序。试试:

myTopToolbar.barStyle = UIBarStyleDefault;   
myTopToolbar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:NAVIGATION_BAR_BACKGROUND]];

更改 tintcolor 后分配样式可能会重置颜色。

编辑

我不知道为什么这只会影响 ios5 而不会影响 ios6。

【讨论】:

【参考方案2】:

您可以使用UIAppearance(适用于 iOS 5.0 及更高版本)。

【讨论】:

【参考方案3】:

尝试设置颜色属性

myTopToolbar.tintColor = [UIColor redColor]; 

如果这在 iOS6 和 iOS5 中都能正常工作,那么问题应该出在图像上。

已编辑 检查这个问题

iphone:UIToolbar when set to tint color behaves differently on iOS 5 and ios6 simulator?

【讨论】:

你可以在iOS5设备上查看。我希望你不会在设备中遇到任何问题 你在设备中检查了这个 没有 ios 5.0 设备可以查看。 我认为它不会在设备中产生任何问题。 顺便说一句,我在导航栏上使用相同的图像。它在两者上都正确显示。所以我认为图像没有问题。【参考方案4】:

尝试在您的应用委托实现类中执行此操作,这将更改整个应用程序中的工具栏和搜索栏颜色

用于设置搜索栏的色调

[[UISearchBar appearance] setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:NAVIGATION_BAR_BACKGROUND]]];

[[UISearchBar appearance] setTintColor:[UIColor colorWithRed:102/255.0 green:102/255.0 blue:102/255.0 alpha:1]];

用于设置工具栏的色调

[[UIToolbar appearance] setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:NAVIGATION_BAR_BACKGROUND]];

[[UIToolbar appearance] setTintColor:[UIColor colorWithRed:102/255.0 green:102/255.0 blue:102/255.0 alpha:1]];

用于设置背景图片

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"bgtoolbar.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

【讨论】:

这很奇怪请试试这个 [[UISearchBar 外观] setTintColor:[UIColor colorWithRed:102/255.0 green:102/255.0 blue:102/255.0 alpha:1]];和 [[UIToolbar 外观] setTintColor:[UIColor colorWithRed:102/255.0 green:102/255.0 blue:102/255.0 alpha:1]]; 那行得通。有一个非常浅的黑色。但它改变了整个应用程序中工具栏的颜色。 是的,如果您在应用程序委托中使用它,它将改变整个应用程序的收费栏颜色,如果您希望任何 viewController 中的特定工具栏发生更改,那么在您的那个 viewController 中进行操作【参考方案5】:

我已经解决了。只是将图像转换为 RGB 值并像这样设置。

myTopToolbar.tintColor = [UIColor colorWithRed:139/256.0 green:0/256.0 blue:0/256.0 alpha:1.0];

【讨论】:

你应该除以 255.0

以上是关于UIToolbar 在 ios 5.0 和 ios 6.0 模拟器上显示不同的颜色的主要内容,如果未能解决你的问题,请参考以下文章

具有背景颜色的 UIToolbar 在 iOS 10 中变为白色

iOS7 UIToolbar 崩溃

iOS UIToolBar的使用

iOS 13 UIToolBar 样式

iOS UIToolBar 隐藏在键盘上

UIBarButtonItem 在 iOS 7 的 UIToolbar 上不显示