使用全局应用程序颜色的 SFSafariViewController 背景按钮颜色
SFSafariViewController background button color using global app colors
我的应用程序使用下面的这一行来更改所有按钮以使用这种特定颜色。它还将我的 SFSafariViewController 中的按钮变成相同的颜色,这看起来很糟糕。但是我找不到解决这个问题的好方法。我这样做的唯一方法是下面的代码,但它后面有一个问题。
[[UIButton appearance] setBackgroundColor:[Helper getColor:self.application.color]];
由于 setBackgroundColor 的作用,但一旦我完成浏览器并返回到应用程序,我的所有按钮都是清晰的。
[[UIButton appearance] setBackgroundColor:[UIColor clearColor]];
SFSafariViewController *safariViewController = [[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:self.message.filePath]];
[self presentViewController:safariViewController animated:true completion:nil];
这个也没用。
[[UIButton appearanceWhenContainedIn:[SFSafariViewController class], nil] setBackgroundColor:[UIColor clearColor]];
必须有更简单的方法来做到这一点。您可以看到应用程序的颜色是橙色,在 Safari 浏览器中看起来不太好。
看起来唯一的方法是创建自定义视图控制器并跟踪以前的颜色。
@implementation BrowserViewController
@synthesize appColor;
-(instancetype)initWithURL:(NSURL *)URL {
appColor = [[UIButton appearance] backgroundColor];
[[UIButton appearance] setBackgroundColor:[UIColor clearColor]];
return [super initWithURL: URL];
}
- (void)viewWillDisappear:(BOOL)animated {
[[UIButton appearance] setBackgroundColor:appColor];
[super viewWillDisappear:animated];
}
- (void)viewDidUnload {
self.appColor = nil;
[super viewDidUnload];
}
@end
我的应用程序使用下面的这一行来更改所有按钮以使用这种特定颜色。它还将我的 SFSafariViewController 中的按钮变成相同的颜色,这看起来很糟糕。但是我找不到解决这个问题的好方法。我这样做的唯一方法是下面的代码,但它后面有一个问题。
[[UIButton appearance] setBackgroundColor:[Helper getColor:self.application.color]];
由于 setBackgroundColor 的作用,但一旦我完成浏览器并返回到应用程序,我的所有按钮都是清晰的。
[[UIButton appearance] setBackgroundColor:[UIColor clearColor]];
SFSafariViewController *safariViewController = [[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:self.message.filePath]];
[self presentViewController:safariViewController animated:true completion:nil];
这个也没用。
[[UIButton appearanceWhenContainedIn:[SFSafariViewController class], nil] setBackgroundColor:[UIColor clearColor]];
必须有更简单的方法来做到这一点。您可以看到应用程序的颜色是橙色,在 Safari 浏览器中看起来不太好。
看起来唯一的方法是创建自定义视图控制器并跟踪以前的颜色。
@implementation BrowserViewController
@synthesize appColor;
-(instancetype)initWithURL:(NSURL *)URL {
appColor = [[UIButton appearance] backgroundColor];
[[UIButton appearance] setBackgroundColor:[UIColor clearColor]];
return [super initWithURL: URL];
}
- (void)viewWillDisappear:(BOOL)animated {
[[UIButton appearance] setBackgroundColor:appColor];
[super viewWillDisappear:animated];
}
- (void)viewDidUnload {
self.appColor = nil;
[super viewDidUnload];
}
@end