Question

juste de passer à iOS 4 sur mon iPhone 3GS et certains de mes applications se sont brisés.

Une question que je HAD que j'avais un UIToolbar avec quelques boutons, teintés de rose, qui ont bien fonctionné sur le système d'exploitation 3.1.3. Après mise à niveau vers iOS 4, la barre d'outils était toujours teintée, mais les boutons qu'il contenait ont été plus touchés par la teinte. La barre d'outils était rose tandis que les boutons étaient régulièrement bleu.

chercha des yeux sur le net, mais n'a trouvé aucune référence d'une telle chose.

Tout le monde sait ce qui a éclaté dans le processus?

Était-ce utile?

La solution

(doit être franc ici - je connaissais la réponse avant de poster, juste ne pas savoir comment charger ces données à StackOverflow pensée la solution que j'ai trouvé utile pour les autres, donc voulu poster ici, je suis nouveau.. ici, alors s'il vous plaît pas de critiques sévères :))

Finalement, le problème résulte de, AFAICT, un changement de comportement dans le système d'exploitation.

Comme indiqué le code de teinte travaillé avant la mise à niveau et a été écrit comme ceci:

// 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];

Qu'est-ce que je devais faire, était juste inverser l'ordre des choses:

// 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]; 

(Si vous avez créé UIToolbar dans Interface Builder, vous pouvez y changer la teinte de, et qui applique pour les boutons ainsi).

Je suppose que la teinte mis à jour tous les boutons avant iOS 4, alors que dans iOS 4, il ne fonctionne pas et lors de l'ajout de boutons, ils vérifient pour la teinte existante. Mais ce n'est qu'une supposition. La solution fonctionne de toute façon ..

Espérons que cela aide quelqu'un, et que je ne viole aucune règle SO sacrée ...

Vive!

Autres conseils

Eh bien, il ressemble plus à un bug du système d'exploitation d'une fonctionnalité, car les barres de navigation ne changent lorsque vous définissez leur tintColor la couleur de leur article.

Nous avons constaté que si vous changiez rafraîchit le style de l'élément, leur couleur comme un effet secondaire. Faire ce qui suit travaillé dans notre cas. Les boutons originaux sont bordés, donc nous les changer à la plaine et les mettre à nouveau bordée. Vous pouvez faire un code plus compliqué et générique qui permet d'économiser le style actuel, définit un autre et switchs puis retour. Je suis juste paresseux pour le faire. :. D Quoi qu'il en soit, vous obtenez l'idée

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;
}

Cordialement, Rula.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top