iOS 4上的UIToolbar色调

Ode*_*Dov 13 iphone tint uitoolbar tintcolor ios4

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

我遇到的一个问题是我有一个带有一些按钮的UIToolbar,有点粉红色,在3.1.3操作系统上运行良好.升级到iOS 4后,工具栏仍然有色,但它包含的按钮不再受色调的影响.工具栏是粉红色的,而按钮是常规蓝色.

在网上环顾四周,但没有发现这样的事情的参考.

谁知道这个过程中发生了什么?

Ode*_*Dov 23

(必须坦率地说 - 我在发布之前知道了答案,只是不知道如何将这些数据加载到StackOverflow.认为我发现的解决方案对其他人很有价值,所以想在这里发布.我是新来的,所以请没有严厉的批评:))

因此,最终问题是由于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];
Run Code Online (Sandbox Code Playgroud)

我需要做的只是颠倒事物的顺序:

// 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]; 
Run Code Online (Sandbox Code Playgroud)

(如果您在Interface Builder中创建了UIToolbar,则可以在那里更改它的色调,这也适用于按钮).

我想色调在iOS 4之前更新了所有按钮,而在iOS 4中它没有,当添加按钮时,它们检查现有的色调.但这只是猜测.解决方案无论如何都有效..

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

干杯!


小智 10

好吧,它似乎更像是操作系统错误,而不是功能,因为导航栏在设置tintColor时会改变项目的颜色.

我们发现,如果您更改项目的样式,它会将其颜色刷新为副作用.在我们的案例中做了以下工作.原始按钮有边框,因此我们将它们更改为plain并将它们设置为再次接边.您可以执行更复杂和通用的代码来保存当前样式,设置另一个然后再切换回来.我只是懒得那样做.: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;
}
Run Code Online (Sandbox Code Playgroud)

此致,鲁拉.