タイトルバーの色合いを設定し、すべてのビューの背景画像を設定しましたが、私の人生は設定方法を理解できませんセクションヘッダーなどのデフォルトのUILabelの色。私はすべての色をUIColor.Blackに手作業で設定してコードを謎めいていません。さまざまなUIElementsのリストを取得する方法はありますか?それぞれのデフォルト(色、フォント、サイズ)を設定する方法はありますか?私は特にラベルの色に興味がありますが、その他の情報は将来にとって非常に役立ちます。Monotouchでアプリケーション全体のデフォルトのUILabelの色を設定します
答えて
これはちょっとハッキリですが、これはトリックですが、サブクラスUIView
のすべての種類のUIコントロールで動作します。これはあなた自身がサブクラス化されたDialogViewController
を持っていることを前提としています(私の中には便利な時間がたくさんあり、私のすべてのビューは仕事をするために私のDVCをサブクラス化しています)。
protected void ForAllSubviewUIControlsOfType<TUIType>(Action<TUIType, int> actionToPerform) where TUIType : UIView
{
processSubviewUIControlsOfType<TUIType>(this.View.Subviews, actionToPerform, 0);
}
private void processSubviewUIControlsOfType<TUIType>(UIView[] views, Action<TUIType, int> actionToPerform, int depth) where TUIType : UIView
{
if (views == null)
return;
if (actionToPerform == null)
return;
foreach (UIView view in views)
{
if (view.GetType() == typeof(TUIType))
{
actionToPerform((TUIType)view, depth);
}
if (view.Subviews != null)
{
foreach (UIView subview in view.Subviews)
{
processSubviewUIControlsOfType<TUIType>(view.Subviews, actionToPerform, depth + 1);
}
}
}
}
元の問題を解決し、セクション内にあるすべてのラベルのテキストの色を変更するには、これはあなたが何をする必要があるかです:
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
ForAllSubviewUIControlsOfType<UILabel>((label, depth) => {
if (/*label.Superview is UIView && label.Superview.Superview is UITableView*/ depth == 1)
{
label.TextColor = UIColor.Black;
}
});
}
コメントアウト部分があれば決定されたものです私がint depth
のカウントを返して、それがビュー上にあるかどうかを確認する前に、セクション内にラベルが存在していました。
EDIT:これは完璧な解決策ではないかのように思われます。深さのカウントはこれらの要素によって異なります。私は次の日か2日に何か良いものを見つけなければならないでしょう。
iOS 5からは、多くのUI要素のグローバルな外観を処理するためのUIAppearance
クラスがあります。
MonoTouchで動作する方法は、Appearance
という内部タイプがこれらのタイプに存在することです。プロパティを直接設定することもできます(MonoDevelopのコード補完が簡単です)。例えば。
UILabel.Appearance.BackgroundColor = UIColor.Blue;
悲しいことに、あなたが望むかもしれないすべてのコントロール(iOS 5以前では動作しません)をカバーしていません。
悲しいことに、フォアグラウンドカラーではなく背景色のみを変更することができます。しかし、私はちょっと投稿する回避策を見つけました。 –
- 1. PDCurses内のウィンドウ全体の背景色を設定します
- 2. アプリケーション全体のグローバルエラーメッセージの設定
- 3. .Netでは、デフォルトのアプリケーション全体の分離レベルを指定できますか?
- 4. iReportのページ全体に背景色を設定するには?
- 5. Windows Phoneのアプリケーション全体のフォアグラウンドを設定する
- 6. アプリケーション全体の「設定テーブル」は良いアイデアですか?
- 7. Qtアプリケーションのウィンドウ全体の背景色を設定するにはどうすればよいですか?
- 8. android:アプリケーション全体のカスタムフォントを設定する方法
- 9. アプリケーション全体のローカライゼーションを設定するには?
- 10. iOSアプリケーション全体で色のテーマを変更する
- 11. CellTable GWTで列全体の背景色を設定する方法
- 12. 別のクラスのアプリケーション全体のDefaultSharedPreferences設定
- 13. Xamarin/monotouch UILabel multiline
- 14. アプリケーション全体でリスニングするカスタムリスナーを設定する
- 15. アプリケーション全体で回転を設定する
- 16. SQL Server:ストアドプロシージャ全体のデフォルトの分離レベルを設定する方法は?
- 17. Obj-C、plist値に基づいてUILabelの色を設定しますか?
- 18. Javaアプリケーションをデフォルトのファイルオープナーとして設定できますか?
- 19. Xamarin.iOSアプリ全体のカスタムデフォルトフォントを設定しますか?
- 20. wpf/win32の混在アプリケーションでアプリケーション全体のホットキーを定義
- 21. 背景画像をアンドロイドでアプリケーション全体に設定
- 22. ストラトス全体のシングルサインオンの設定
- 23. Google Maps API、国全体のマーカーを設定できますか?
- 24. デフォルトのアプリケーションとして.jarを設定しますか? (Mac OSX)
- 25. 全体レイアウトでスクロールを設定します。
- 26. キーボード全体の変更アプリケーション全体のアプリケーション
- 27. jqueryコンポーネント全体からのアクセス設定
- 28. Monotouchを使用してビュー全体でTextField値にアクセス
- 29. アプリ全体にUIKeyboardAppearanceを設定する
- 30. vue.jsのアプリケーション全体のグローバル
あなたは 'UILabel'をサブクラス化し、そこにあなたの"デフォルト "ラベルを設定する作業をすることができますか?この方法で、コード全体(またはXIBファイル)でサブクラスを使用するだけです。 – jonathanpeppers
Monotouch.Dialogを使用しているので、アセンブリビューからソースをコピーして自分のクラスを作成しない限り、これらの要素を制御する方法はありません。 1つの場所でラベルの色を変更する方法が見つからない場合は、このルートを検討しています。 –
詳しくは、私自身のDDRootElement、DDSectionなどを使って、これらのラベルを自分が選んだ色に設定します。 –