amitsbajaj amitsbajaj - 6 months ago 134
Objective-C Question

Set Done Button Colour on SFSafariViewController

I am using the

SFSafariViewController
to access a website called from a
UITableViewController
. Because my app has a very light feel attached to it, I have added the following line of code in the
AppDelegate
:

self.window.tintColor = [UIColor whiteColor];


When running the
SFSafariViewController
, I get the following:

enter image description here

Is there anyway I can change the colour of the
Done
button to Blue (as per default)?

I've tried the following when calling the
SFSafariViewController
but to no effect:

[self presentViewController:safariVC animated:YES completion:^{
safariVC.navigationController.navigationItem.rightBarButtonItem.tintColor = [UIColor blueColor];


[self presentViewController:safariVC animated:YES completion:^{
safariVC.navigationController.navigationBar.tintColor = [UIColor blueColor];
}];


Neither of those work.

I could of course leave the app as default and take out the white setting from the
AppDelegate
, but I want this approach within the app because Blue just stands out too much with custom themes.

Any guidance on this would be really appreciated.

Answer

You can change bar colours globally using appearance proxy:

try

[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor blueColor]];

else try

  [self presentViewController:safariVC animated:YES completion:^{

         [safariVC.navigationBar setTintColor:[UIColor blueColor]];
    }];

else try

in AppDelegate.m in the function:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

I've entered the following code:

//SFSafariViewController
[[UINavigationBar appearanceWhenContainedIn:[SFSafariViewController class], nil] setBarTintColor:[UIColor blueColor]];
[[UINavigationBar appearanceWhenContainedIn:[SFSafariViewController class], nil] setTintColor:[UIColor blueColor]];
Comments