大家好,我正在我的应用程序中实现iOS 13的黑暗模式的管理功能。我的ViewController的背景有问题。
我的视图控制器具有通过CAGradientLayer
获得的背景渐变颜色。
当[ 要更改渐变颜色,用户必须关闭应用程序然后重新打开。 一个非常糟糕的用户体验,所以我想问你如何解决这个问题... 这是我根据用户选择的iOS
模式更改渐变颜色的方法- (void)viewDidLoad {
[super viewDidLoad];
[self setupBackground];
}
- (void)setupBackground {
UIColor *secondaryColor = self.view.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark ? UIColor.customRedColor : UIColor.customGreenColor;
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = UIApplication.sharedApplication.windows.firstObject.bounds;
gradient.colors = @[(id)UIColor.customBlueColor.CGColor, (id)secondaryColor.CGColor];
gradient.locations = @[@0.1, @0.9];
[self.view.layer insertSublayer:gradient atIndex:0];
}
[大家好,我正在我的应用程序中实现用于管理iOS 13暗模式的功能。我的ViewController的背景出现问题。我的视图控制器具有背景...
traitCollectionDidChange
并更新其背景:- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
[super traitCollectionDidChange:previousTraitCollection];
if (@available(iOS 13.0, *)) { // Needed if your app supports iOS 12
if ([self.traitCollection hasDifferentColorAppearanceComparedToTraitCollection:previousTraitCollection]) {
[self setupBackground];
}
}
}