13

iPhone 3GS で iOS 4 に切り替えたところ、いくつかのアプリが壊れました。

私が抱えていた問題の 1 つは、3.1.3 OS でうまく機能する、ピンク色に着色されたいくつかのボタンを備えた UIToolbar があったことです。iOS 4 にアップグレードした後、ツールバーはまだ着色されていましたが、ツールバーに含まれていたボタンは着色の影響を受けなくなりました。ツールバーはピンク色で、ボタンは通常の青色でした。

ネットで調べてみましたが、そのような記載はありませんでした。

プロセスで何が壊れたのか誰か知っていますか?

4

2 に答える 2

23

(ここで率直に言う必要があります-投稿する前に答えを知っていました。このデータをStackOverflowにロードする方法がわかりませんでした。私が見つけた解決策は他の人にとって価値があると思ったので、ここに投稿したかったのです。私はここに新しいので、厳しい批評家はご遠慮ください:))

そのため、最終的に問題は、AFAICT、OS の動作の変更が原因でした。

述べたように、色合いのコードはアップグレード前に機能し、次のように記述されていました。

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

(Interface Builder で UIToolbar を作成した場合は、そこで色合いを変更できます。これはボタンにも適用されます)。

私は色合いがiOS 4の前にすべてのボタンを更新したと思いますが、iOS 4ではそうではなく、ボタンを追加するときに既存の色合いをチェックします。しかし、これは単なる推測です。とにかく解決策はうまくいきます..

これが誰かの助けになることを願っており、神聖なSOルールに違反していないことを願っています...

乾杯!

于 2010-06-30T17:06:36.257 に答える
10

これは、tintColor を設定するとナビゲーション バーのアイテムの色が変わるため、機能というよりも OS のバグのように思えます。

アイテムのスタイルを変更すると、副作用として色が更新されることがわかりました。私たちの場合、次のことを行うとうまくいきました。元のボタンはフチありなので、無地に変更して再度フチありに設定。現在のスタイルを保存し、別のスタイルを設定してから元に戻す、より複雑で一般的なコードを実行することもできます。私はそれをするのが面倒です。: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;
}

よろしく、ルーラ。

于 2010-07-02T15:14:21.257 に答える