17

を使用している場合UIActivityViewController、ユーザーがアクティビティ (メールやメッセージなど) を選択した後、ステータス バーのテキストの色も、[キャンセル] および [送信] ナビゲーション バー ボタンのテキスト/濃淡の色も変更できません。バーボタンについては、AppDelegate次を使用してみました:

    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

そして、何も起こりません。ただし、これでナビゲーションバーのタイトルを設定できます:

    [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil]];

に を設定UIViewControllerBasedStatusBarAppearanceNOましたInfo.plist。そして、次の行を入れます:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

で、AppDelegateステータスバーの色をまったく変更できませんでした。何か案は?

4

6 に答える 6

7

UIActivityViewController は基になるモデル ビュー コントローラーを提示するため、この回避策を使用してステータス バーの色の問題を修正します。

@interface StatusBarColorApplyingActivityViewController : UIActivityViewController

@end

@implementation StatusBarColorApplyingActivityViewController

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
  [super presentViewController:viewControllerToPresent animated:flag completion:^{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    if (completion) {
      completion();
    }
  }];
}

@end

ご覧のとおり、これは UIActivityViewController をオーバーライドしてpresentViewController:animated:completion:. ビュー コントローラーが表示されたら、完了ブロックで UIApplication を介してステータス バーのスタイルを設定します。次に、メソッドに与えられた元の完了ブロックがあれば、それを呼び出します。

于 2014-07-23T11:19:26.413 に答える
4

からサブクラス化するのではなくUIActivityViewController、表示時にナビゲーション バーの tintColor を変更し、completionHandler. 例えば:

UIColor *normalColor = [[UINavigationBar appearance] tintColor];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];
[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) {
      // back to normal color
     [[UINavigationBar appearance] setTintColor:normalColor];
}];

[self presentViewController:activityViewController animated:YES completion:^{
     // change color to suit your need
     [[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:25.0f/255.0f green:125.0f/255.0f blue:255.0f/255.0f alpha:1.0f]]; // ActionSheet options' Blue color
}];
于 2014-09-02T12:36:27.647 に答える
0

[送信] ボタンと[キャンセル]ボタンのテキストの色を変更する解決策を見つけました。

ここから私の答えを確認してください。

ステータスバーのスタイルを黒から白に変更することに関して、私は Stackoverflow にあるほとんどすべてを試しましたが、何も機能しませんでした。それを回避する方法はないようです。

動作する可能性があることの 1 つですが、使用方法がよくわかりませんが、子ビュー コントローラーのステータス バーのスタイルを変更することができます。それに関する Stackoverflow の投稿がここにあります。

MFMailComposerViewControllerこれは、とMFMessageComposeViewControllerが の子ビュー コントローラーであるという前提がある場合にのみ機能する可能性がUIActivityViewControllerあります。そのため、 のステータス バー スタイルを指定するとUIActivityViewController、子ビュー コントローラーは親と同じステータス バー スタイルを持つ必要があります。

UIViewControllerと呼ばれるメソッドがありchildViewControllerForStatusBarStyleます。これに関する Apple のドキュメントは次のとおりです

しかし、私はそれを使用する方法を本当に知りません。誰かがこれを理解しましたか?

于 2014-04-12T20:48:13.437 に答える
-1

アプリ全体の tintColor を設定する必要があります。

self.window.tintColor = [UIColor redColor];

また

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

バーボタン

self.navigationController.navigationBar.tintColor = [UIColor redColor];
于 2013-11-26T04:52:50.527 に答える