2

ViewWillAppear で TintColor がプログラムで設定されているいくつかの UIBarButtonItems を含む 6.1 SDK を使用してコンパイルされた iOS アプリがあります。

UIBarButtonItem leftButton = new UIBarButtonItem(...);
leftButton.TintColor = UIColor.FromRGB(231, 231, 231);

結果的にこうなりました。

6.1 のカスタム UIBarButtonItem TintColor

iPhone を 7.0 にアップグレードしましたが、デバイスの下位互換性のために 6.1 SDK 用にビルドする必要があります (ビジネス上の理由から)。

6.1 SDK を使用してアプリをビルドし、iOS 7.0 を実行している iPhone で実行すると、ツールバーは次のようになります。

7.0 のカスタム UIBarButtonItem TintColor

iOS 7 UI Transition Guide を読んだ後、UIWindow の TintColor を設定して、これが効果があるかどうかを確認してみました。それはしませんでした。

興味深いことに、このフォームで ActionSheet を表示すると、ActionSheet を閉じた後、[キャンセル] ボタンと [保存] ボタンの背景が「黒」から「白」に変わります。なぜこのようなことが起こるのか、現在調査中です。

iOS 7.0 で TintColor をプログラムで変更できない場合は、このようにボタンのカスタム背景画像を作成することを考えています。

灰色がかったボタン

また、SetBackgroundImage を使用して既存の背景をオーバーライドします。

前もって感謝します。

更新 - 09.24.13

poupou の回答は、8:37 に解決策を提供してくれた WWDC ビデオ (リンク) を教えてくれました。特定のボタンの TintColor を設定する代わりに、ナビゲーション バーの TintColor を設定する必要があります。

NavigationBar.TintColor = UIColor.FromRGB(231, 231, 231);
4

1 に答える 1

1

UIWindow の TintColor を設定して、これが効果があるかどうかを確認してみました。それはしませんでした。

必要がありますがTintColor、他の UI 要素を設定している場合は、メインに設定されている要素よりも優先されUIWindowます。

WWDC 2013 のセッション全体 (セッション 214) がTintColorあり、それが iOS7 でどのように機能するかについて説明されています (Tic Tac Toe サンプルのセッションです)。

iOS バージョンに固有のコードを実行/除外する必要がある場合は、次のようにします。

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) {
    // iOS 7.0 and later
} else {
    // iOS 6.1 and earlier
}
于 2013-09-24T00:36:52.733 に答える