刚刚切换到iPhone 3GS上的iOS 4,我的一些应用程序破裂了。

我遇到的一个问题是,我有一个带有一些按钮的uitoolbar,呈粉红色,在3.1.3 OS上效果很好。升级到iOS 4后,工具栏仍然被着色,但是它包含的按钮不再受颜色影响。工具栏是粉红色的,而按钮是常规的蓝色。

在网上环顾四周,但没有发现这样的东西。

有人知道在此过程中破裂了吗?

有帮助吗?

解决方案

(在这里必须坦率地在这里 - 我在发布之前就知道答案,只是不知道如何将这些数据加载到堆叠。认为我发现的解决方案对他人很有价值,所以想在这里发布。我是新手请不要苛刻的批评家:))

因此,最终,问题是由于AFAICT导致了操作系统行为的变化。

正如提示在升级之前有效的那样,如下所示:

// Toolbar content               
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE
[toolbar setItems:items]; 

// Add tint
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];

我需要做的就是扭转事物的顺序:

// Add tint
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];

// Toolbar content               
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE
[toolbar setItems:items]; 

(如果您在接口构建器中创建了Uitoolbar,则可以在此处更改它的色调,并且也适用于按钮)。

我猜想在iOS 4之前更新了所有按钮,而在iOS 4中则没有,并且在添加按钮时,它们是否检查了现有的色调。但这只是一个猜测。解决方案都可以。

希望这对某人有帮助,并且我没有违反任何神圣的规则...

干杯!

其他提示

好吧,它似乎更像是一个操作系统的错误,而不是一个功能,因为当您设置其TintColor时,导航栏确实会更改其物品的颜色。

我们发现,如果您更改项目的样式,它将刷新它们的颜色作为副作用。在我们的情况下进行以下操作。原始按钮是边框的,因此我们将它们更改为平原,并将它们再次框起来。您可以执行更复杂和通用的代码,以保存当前样式,设置另一个样式,然后再切换。我只是懒惰。 :D无论如何,您明白了。

toolbar.tintColor = //<some dynamically obtained UIColor>

// Workaround to properly set the UIBarButtonItem's tint color in iOS 4
for (UIBarButtonItem * item in toolbar.items)
{
    item.style = UIBarButtonItemStylePlain;
    item.style = UIBarButtonItemStyleBordered;
}

问候,鲁拉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top